当前位置:首页 » 编程语言 » c语言a54a3a5

c语言a54a3a5

发布时间: 2023-02-16 18:04:04

A. c语言编程,输入10个学生5门课的成绩,分别用函数实现以下功能:

#include<stdio.h>
#include<windows.h>
main()
{
int
i,j,li=0,lj=0;
float
score[10][5],average[10],a1,a2,a3,a4,a5,largest=0,fc=0,a=0;
//score是50个学生的成绩,average是5门课的平均成绩,a1-a5分别是5门课的平均成绩,li是最高分的学生
//lj是最高分的学科,largest是最高分,fc是平均分方差,a是50个成绩的平均分
printf("请输入10个学生的成绩,按照语文、数学、英语、物理、化学的顺序依次输入:\n");
for(i=0;i!=10;++i)
{
printf("第%d个学生:\n",i+1);
for(j=0;j!=5;++j)
{
scanf("%f",&score[i][j]);
if(largest<score[i][j])
{
largest=score[i][j];
li=i+1;
lj=j+1;
}
a=a+score[i][j];
}
average[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3]+score[i][4])/5;
a1=a1+score[i][0];
a2=a2+score[i][1];
a3=a3+score[i][2];
a4=a4+score[i][3];
a5=a5+score[i][4];
}
a=a/50;
for(i=0;i!=10;++i)
{
for(j=0;j!=5;++j)
{
fc=fc+(score[i][j]-a)*(score[i][j]-a);
}
}
fc=fc/50;
a1=a1/10;
a2=a2/10;
a3=a3/10;
a4=a4/10;
a5=a5/10;
printf("50个学生的成绩如下:\n");
printf("学生编号
语文
数学
英语
物理
化学\n");
for(i=0;i!=10;++i)
{
printf("%8d
",i);
for(j=0;j!=5;++j)
{
printf("%2.2f
",score[i][j]);
}
printf("\n");
}
for(i=0;i!=10;++i)
printf("第%d个学生的平均分为:%.2f\n",i+1,average[i]);
printf("第1门课的平均分为:%.2f\n",a1);
printf("第2门课的平均分为:%.2f\n",a2);
printf("第3门课的平均分为:%.2f\n",a3);
printf("第4门课的平均分为:%.2f\n",a4);
printf("第5门课的平均分为:%.2f\n",a5);
printf("50个分数中最高的分数是第%d个学生的第%d门课,分数为:%.2f\n",li,lj,largest);
printf("平均分方差为:%.2f\n",fc);
system("pause");
}

B. C语言中整型常量有几种形式它们是如何表示的

在C语言中,整型常量分为十进制整型常量、八进制整型常量和十六进制整型常量三种表示形式。
1、十进制整型常量
此种格式的整型常量只能出现 0~9 的数字,且可带正、负号。比如:
0 1 364 28 -34

2、八进制整型常量
此种格式的整型常量以数字0开头的八进制数字串。其中数字为 0~7。例如:
0111十进制 73、 011十进制 9、 0123十进制 83、

3、十六进制整型常量
此种格式的整型常量以0x或0X(x是大写)开头的十六进制数字串。其中每个数字可以是 0~9、a~f或 A~
F 中的数字或英文字母。例如:
0x11十进制 17、 0Xa5十进制 165、 0x5a十进制 90、

C. c语言编程子数整除

#include<stdio.h>

main()

{

intk,a,num1,num2,num3;

scanf("%d",&k);

for(a=10000;a!=30001;a++)

{

num1=a/100;

num2=a/10-(a/10000)*1000;

num3=a-(a/1000)*1000;

if(num1==0||num2==0||num3==0)

continue;

elseif((num1%k)==0&&(num2%k)==0&&(num3%k)==0)

printf("%d ",a);

}

getchar();

getchar();

return0;

}

结果:如图

D. 一道关于乐透奖兑奖算法的C语言编程题

##include "stdio.h"
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int awardnum[6],yournum[6],sum=0,special,i,j;
bool mark=false;
srand(time(NULL));
for(i=0;i<6;i++)
{
awardnum[i]=rand()%42;
for(j=0;j<i;j++)
{
while(awardnum[i]==awardnum[j]) awardnum[i]=rand()%42;//这里确保摇出的奖没有重复号
}
cout<<awardnum[i]<<endl;//这句话用作调试
}
special=rand()%42;//特殊号码这里没有确保和前面6个数不一样,这样可能出现没有二等奖的情况
cout<<"特殊号码为"<<special<<endl; //这里也用作调试
cout<<"请输入6个不重复的彩票号码"<<endl;
for(i=0;i<6;i++) cin>>yournum[i];
for (i=0;i<6;i++)
{
int temp=sum;
for (j=0;j<6;j++)
{
if (yournum[i]==awardnum[j]) sum++;
}
if(temp==sum)
{
if(yournum[i]==special) mark=true;
}
}
if(sum==6) {cout<<"恭喜,你中了特等奖!"<<endl; return;};
if(sum==5 && mark){cout<<"恭喜,你中了二等奖!"<<endl; return;};
if(sum==5 && !mark){cout<<"恭喜,你中了三等奖!"<<endl; return;};
if(sum==4){cout<<"恭喜,你中了四等奖!"<<endl; return;};
if(sum==3){cout<<"恭喜,你中了五等奖!"<<endl; return;};
if(sum<3){cout<<"对不起,你没有中奖!"<<endl; return;};
}
//看看是不是你想要的!在Vc6.0上调试通过

E. 一个C语言全排列的算法。 比如,输入3,则将123的全排列全部输出:123,132,213,231

#include
main()
{
int a1,a2,a3,a4,a5,a6,a7,a8,a9,n,t=0;
scanf("%d",&n);
for(a1=1;a1<=n;a1++)
if(n==1){printf("%d\n",a1);t=t+1;}
else
for (a2=1;a2<=n;a2++)
if(a2!=a1)
{if(n==2) {printf("%d%d\n",a1,a2);t=t+1;}
else
for (a3=1;a3<=n;a3++)
if(a3!=a2&&a3!=a1)
{if(n==3) {printf("%d%d%d\n",a1,a2,a3);t=t+1;}
else
for (a4=1;a4<=n;a4++)
if(a4!=a3&&a4!=a2&&a4!=a1)
{if(n==4) {printf("%d%d%d%d\n",a1,a2,a3,a4);t=t+1;}
else
for (a5=1;a5<=n;a5++)
if(a5!=a4&&a5!=a3&&a5!=a2&&a5!=a1)
{if(n==5) {printf("%d%d%d%d%d\n",a1,a2,a3,a4,a5);t=t+1;}
else
for (a6=1;a6<=n;a6++)
if(a6!=a5&&a6!=a4&&a6!=a3&&a6!=a2&&a6!=a1)
{if(n==6) {printf("%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6);t=t+1;}
else
for (a7=1;a7<=n;a7++)
if(a7!=a6&&a7!=a5&&a7!=a4&&a7!=a3&&a7!=a2&&a7!=a1)
{if(n==7) {printf("%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7);t=t+1;}
else
for (a8=1;a8<=n;a8++)
if(a8!=a7&&a8!=a6&&a8!=a5&&a8!=a4&&a8!=a3&&a8!=a2&&a8!=a1)
{if(n==8) {printf("%d%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7,a8);t=t+1;}
else
for (a9=1;a9<=n;a9++)
if(a9!=a8&&a9!=a7&&a9!=a6&&a9!=a5&&a9!=a4&&a9!=a3&&a9!=a2&&a9!=a1)
{if(n==9) {printf("%d%d%d%d%d%d%d%d%d\n",a1,a2,a3,a4,a5,a6,a7,a8,a9);t=t+1;}
}
}
}
}
}
}
}
}
printf("共有%d种\n",t);
getchar();getchar();
}
自己辛辛苦苦写的,用dev c运行成功

F. 用C语言写一个程序:输入5个实型数求平均值,输出这5个数的和及平均值,保留4位小数,要求输出格式整齐。

#include<stdio.h>
void main()
{
float a,b,c,d,sum,average;
printf("请依次输入4个实数,以空格间隔,以回车键结束:\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
sum=a+b+c+d;
average=sum/4;
printf("4个实数的总和为: %.4f\n",sum);
printf("4个实数的平均值为:%.4f\n",average);
}

测试:
请依次输入4个实数,以空格间隔,以回车键结束:
12 13.5 15.7 16.89
4个实数的总和为: 58.0900
4个实数的平均值为:14.5225

G. C语言随即生成字母数字

(1)前两位是10是因为printf("10%c%c%d%c%c%d%c%c\n",a3,a4,a5,a6,a7,a8,a9,a10);
的输出格式字符串前两位是10。
(2)因为你的输出都是用%c格式输出的,所以你说的“随机数字”和“随机字母”其实都是ASCII码表里面的字符,char类型只有128个字符,所以运行1000次肯定是有重复的。

H. 什么是(c语言编程)顺序比较法,不是冒泡和选择额

顺序比较法,就是冒泡呀。。。
答案由提问者自己选择,并不代表爱问知识人的观点 揪错 ┆ 评论 ┆ 举报
祥子
[学者] 相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):
1、稳定排序和非稳定排序

简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就
说这种排序方法是稳定的。反之,就是非稳定的。
比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,
则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,
a2,a3,a5就不是稳定的了。

2、内排序和外排序

在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;
在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。

3、算法的时间复杂度和空间复杂度

所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
================================================================================
*/
/*
================================================
功能:选择排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:

在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环
到倒数第二个数和最后一个数比较为止。

选择排序是不稳定的。算法复杂度O(n2)--[n的平方]
=====================================================
*/
void select_sort(int *x, int n)
{
int i, j, min, t;

for (i=0; i<n-1; i++) /*要选择的次数:0~n-2共n-1次*/
{
min = i; /*假设当前下标为i的数最小,比较后再调整*/
for (j=i+1; j<n; j++)/*循环找出最小的数的下标是哪个*/
{
if (*(x+j) < *(x+min))
{
min = j; /*如果后面的数比前面的小,则记下它的下标*/
}
}

if (min != i) /*如果min在循环中改变了,就需要交换数据*/
{
t = *(x+i);
*(x+i) = *(x+min);
*(x+min) = t;
}
}
}

/*
================================================
功能:直接插入排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:

在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排
好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数
也是排好顺序的。如此反复循环,直到全部排好顺序。

直接插入排序是稳定的。算法时间复杂度O(n2)--[n的平方]
=====================================================
*/
void insert_sort(int *x, int n)
{
int i, j, t;

for (i=1; i<n; i++) /*要选择的次数:1~n-1共n-1次*/
{
/*
暂存下标为i的数。注意:下标从1开始,原因就是开始时
第一个数即下标为0的数,前面没有任何数,单单一个,认为
它是排好顺序的。
*/
t=*(x+i);
for (j=i-1; j>=0 && t<*(x+j); j--) /*注意:j=i-1,j--,这里就是下标为i的数,在它前面有序列中找插入位置。*/
{
*(x+j+1) = *(x+j); /*如果满足条件就往后挪。最坏的情况就是t比下标为0的数都小,它要放在最前面,j==-1,退出循环*/
}

*(x+j+1) = t; /*找到下标为i的数的放置位置*/
}
}

/*
================================================
功能:冒泡排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上
而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较
小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要
求相反时,就将它们互换。

下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的
位置k,这样可以减少外层循环扫描的次数。

冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]
=====================================================
*/

void bubble_sort(int *x, int n)
{
int j, k, h, t;

for (h=n-1; h>0; h=k) /*循环到没有比较范围*/
{
for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
{
if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
{
t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /*完成交换*/
k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
}
}
}
}

/*
================================================
功能:希尔排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:

在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,
并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为
增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除
多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现
了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中
记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量
对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成
一组,排序完成。

下面的函数是一个希尔排序算法的一个实现,初次取序列的一半为增量,
以后每次减半,直到增量为1。

希尔排序是不稳定的。
=====================================================
*/
void shell_sort(int *x, int n)
{
int h, j, k, t;

for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j<n; j++) /*这个实际上就是上面的直接插入排序*/
{
t = *(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h) = *(x+k);
}
*(x+k+h) = t;
}
}
}

/*
================================================
功能:快速排序
输入:数组名称(也就是数组首地址)、数组中起止元素的下标
================================================
*/
/*
====================================================
算法思想简单描述:

快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟
扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次
扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只
减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)
的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理
它左右两边的数,直到基准点的左右只有一个元素为止。它是由
C.A.R.Hoare于1962年提出的。

显然快速排序可以用递归实现,当然也可以用栈化解递归实现。下面的
函数是用递归实现的,有兴趣的朋友可以改成非递归的。

快速排序是不稳定的。最理想情况算法时间复杂度O(nlog2n),最坏O(n2)

=====================================================
*/
void quick_sort(int *x, int low, int high)
{
int i, j, t;

if (low < high) /*要排序的元素起止下标,保证小的放在左边,大的放在右边。这里以下标为low的元素为基准点*/
{
i = low;
j = high;
t = *(x+low); /*暂存基准点的数*/

while (i<j) /*循环扫描*/
{
while (it) /*在右边的只要比基准点大仍放在右边*/
{
j--; /*前移一个位置*/
}

if (i<j)
{
*(x+i) = *(x+j); /*上面的循环退出:即出现比基准点小的数,替换基准点的数*/
i++; /*后移一个位置,并以此为基准点*/
}

while (i<j && *(x+i)<=t) /*在左边的只要小于等于基准点仍放在左边*/
{
i++; /*后移一个位置*/
}

if (i<j)
{
*(x+j) = *(x+i); /*上面的循环退出:即出现比基准点大的数,放到右边*/
j--; /*前移一个位置*/
}
}

*(x+i) = t; /*一遍扫描完后,放到适当位置*/
quick_sort(x,low,i-1); /*对基准点左边的数再执行快速排序*/
quick_sort(x,i+1,high); /*对基准点右边的数再执行快速排序*/
}
}

/*
================================================
功能:堆排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:

堆排序是一种树形选择排序,是对直接选择排序的有效改进。
堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当
满足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)
时称之为堆。在这里只讨论满足前者条件的堆。

由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项。完全二叉树可以
很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。
初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储顺序,
使之成为一个堆,这时堆的根节点的数最大。然后将根节点与堆的最后一个节点
交换。然后对前面(n-1)个数重新调整使之成为堆。依此类推,直到只有两个节点
的堆,并对它们作交换,最后得到有n个节点的有序序列。

从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素
交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数
实现排序的函数。

堆排序是不稳定的。算法时间复杂度O(nlog2n)。

*/
/*
功能:渗透建堆
输入:数组名称(也就是数组首地址)、参与建堆元素的个数、从第几个元素开始
*/
void sift(int *x, int n, int s)
{
int t, k, j;

t = *(x+s); /*暂存开始元素*/
k = s; /*开始元素下标*/
j = 2*k + 1; /*右子树元素下标*/

while (j<n)
{
if (j<n-1 && *(x+j) < *(x+j+1))/*判断是否满足堆的条件:满足就继续下一轮比较,否则调整。*/
{
j++;
}

if (t<*(x+j)) /*调整*/
{
*(x+k) = *(x+j);
k = j; /*调整后,开始元素也随之调整*/
j = 2*k + 1;
}
else /*没有需要调整了,已经是个堆了,退出循环。*/
{
break;
}
}

*(x+k) = t; /*开始元素放到它正确位置*/
}

/*
功能:堆排序
输入:数组名称(也就是数组首地址)、数组中元素个数
*/
void heap_sort(int *x, int n)
{
int i, k, t;
int *p;

for (i=n/2-1; i>=0; i--)
{
sift(x,n,i); /*初始建堆*/
}

for (k=n-1; k>=1; k--)
{
t = *(x+0); /*堆顶放到最后*/
*(x+0) = *(x+k);
*(x+k) = t;
sift(x,k,0); /*剩下的数再建堆*/
}
}

void main()
{
#define MAX 4
int *p, i, a[MAX];

/*录入测试数据*/
p = a;
printf("Input %d number for sorting :\n",MAX);
for (i=0; i<MAX; i++)
{
scanf("%d",p++);
}
printf("\n");

/*测试选择排序*/

p = a;
select_sort(p,MAX);
/**/

/*测试直接插入排序*/

/*
p = a;
insert_sort(p,MAX);
*/

/*测试冒泡排序*/

/*
p = a;
insert_sort(p,MAX);
*/

/*测试快速排序*/

/*
p = a;
quick_sort(p,0,MAX-1);
*/

/*测试堆排序*/

/*
p = a;
heap_sort(p,MAX);
*/

for (p=a, i=0; i<MAX; i++)
{
printf("%d ",*p++);
}

printf("\n");
system("pause");
}

------------------------------------------------------------------------------------------------Mr_computer

I. C语言中如何提取出一个字节的八位各自的状态

Port I/O操作常用写法:定义8个位域,并且和一个Char放到联合体中。

简单写一下:

位域用楼上的写法就行

union {
_aaa testBit;
unsigned char ucTestByte;
} P1;

首先把字节整体赋值,比如0xAA。
P1.ucTestByte = 0xAA;

则可直接使用各Bit进行判断,如:
if ( P1.testBit.a1 == 0 ) {
.....;
}

当然也可以直接对某一位赋值,如:
P1.testBit.a1 = 0;
则P1.ucTestByte变成0xAB;

位域不建议定义成a1-a8,最好是a0-a7,或bit0-bit7。

不编程已好久,具体写法可能不正确,但思路没问题,谨供参考。

J. 5个数求最大值 c语言用if语句怎么求

#include<stdio.h>
intmain()
{
inta1,a2,a3,a4,a5,max;
printf("输入5个数的值:");
scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5);
max=a1;
if(max<a2)
max=a2;
if(max<a3)
max=a3;
if(max<a4)
max=a4;
if(max<a5)
max=a5;
printf("5个数中的最大值为:%d ",max);
return0;
}

示例运行结果:

输入5个数的值: 12 36 5 88 64

5个数中的最大值为: 88

热点内容
已上传附件 发布:2024-11-08 11:47:53 浏览:633
电脑配置都有哪些问题 发布:2024-11-08 11:15:29 浏览:727
新浪微博敏感词数据库 发布:2024-11-08 11:03:22 浏览:472
linux的终端软件 发布:2024-11-08 11:01:46 浏览:204
主机如何把密码关掉 发布:2024-11-08 10:36:25 浏览:720
安卓软件如何锁定 发布:2024-11-08 10:30:27 浏览:709
sql定时执行语句 发布:2024-11-08 10:29:36 浏览:673
迈锐宝xl值得入手哪个配置 发布:2024-11-08 10:14:13 浏览:634
寻欢加密 发布:2024-11-08 10:02:57 浏览:353
拼单源码 发布:2024-11-08 09:58:24 浏览:143