复习题C 程序设计编程题1. 输入 2 个整数,求两数的平方和并输出include void main(){ intt a ,b,s;printf("please input a,b:\n");scanf("%d%d ”,&a,&b);s=a*a+b*b;printf("the result is %d\n",s);}2. 输入一个圆半径( r ),当 r> = 0 时,计算并输出圆的面积和周长,否则,输出提示信息include #define PI 3.14void main() { float r ,s , l;printf("please input r:\n");scanf("%f ” ,&r);if (r>=0){s=pi*r*r;l=2*i*r ;printf("the area is %f\n",s);printf("the circumference is %f\n",l);}elseprintf("input error!\n");}3、函数 y=f(x) 可表示为:2x+1 (x<0)y= 0 (x=0)2x-1 (x>0)编程实现输入一个 x 值,输出 y 值。
include void main(). . . .{ int x,y;scanf( “%d”,&x);if(x<0) y=2*x+1;else if(x>0) y=2*x-1;else y=0;printf( “%d”,y);}4、编写一个程序 , 从 4 个整数中找出最小的数 , 并显示此数include void main( ){int a,b,c,d,t;scanf ( “ %d,%d,%d,%d ” ,&a,&b,&c,&d);if (a>b){t=a; a=b; b=t;}if (a>c){t=a; a=c; c=t;}if (a>d){t=a; a=d; d=t;}printf ( “ min = %d \n ” ,a);}5.有一函数当 x<0 时 y=1,当 x>0 时, y=3,当 x=0 时 y=5,编程,从键盘输入一个 x 值,输出 y 值include void main(){int x,y;scanf("%d",&x);if (x<0) y=1;else if(x==0) y=5;else y=3;printf("x=%d,y=%d\n",x,y);}6.从键盘输入两个数,求出其最大值(要求使用函数完成求最大值,并在主函数中调用该函数)#include float max(float x,float y);void main(){ float a,b,m; scanf("%f,%f",&a,&b); m=max(a,b);. . . .printf("Max is %f\n",m);}float max(float x,float y){float temp;if (x
include void main(){ int yourAge, hisAge;printf("Please enter your age:");scanf("%d", &yourAge); /* 输入你的年龄 yourAge*/printf("Please enter your friend's age:");scanf("%d", &hisAge); /* 输入你朋友的年龄 hisAge*/if (yourAge >= hisAge){printf("You are older! Your age is = %d\n", yourAge);}if (hisAge > yourAge){printf("Your friend is older! HisAge age is = %d\n", hisAge);}}8、键盘输入 2 个加数,再输入答案,如果正确,显示“ right ”,否则显示“ error ”#include “ stdio.h ”void main( ){int a,b,c;printf( “ please input a and b\n ” );scanf (%d,%d ” ,&a,&b);printf( “ please input the answer for a+b\n ”);scanf (%d ” ,&c);if (c==a+b). . . .printf( “right\n ” );elseprintf( “error\n ” );}9. 编一程序每个月根据每个月上网时间计算上网费用,计算方法如下:30元10小时费用每小时 3元10 50小时每小时 2.5元50小时要求当输入每月上网小时数, 显示该月总的上网费用 (6 分)#include void main(){ int hour; float fee;printf( “ please input hour:\n ” );scanf( “ %d” ,&hour);if(hour<=10)fee=30;else if(hour>=10&&hour<=50)fee=3*hour;else fee=hour*2.5;printf( “The total fee is %f ” ,fee);}10. 神州行用户无月租费,话费每分钟 0.6 元,全球通用户月租费 50 元,话费每分钟 0. 4 元。
输入一个月的通话时间, 分别计算出两种方式的费用, 判断哪一种合适include void main(){ float a,x,y;printf( “ \n 请输入您的话费:” );scanf( “ %f, ” ,&a);x= 0.6*a;y=50+0.4*a;printf ( “神州行话费为 n”,x);printf ( “全球通话费为 n”,y);if (x>=y)printf( “建议使用全球通” );else printf( “建议使用神州行 );. . . .}11.个人所得税计算,应纳税款的计算公式如下:收入税率收入 <= 1000 元部分0%2000 元>=收入 >1000 元的部分5%3000 元>=收入 >2000 元的部分10%6000 元>=收入 >3000 元的部分15%收入 >6000 元的部分20%输入某人的收入,计算出应纳税额及实际得到的报酬7 分)(如需连续计算多个人的纳税情况,直到输入负数为止,程序应如何改进?试写出程序)#include “ stdio.h ”void main(){int grade;float income,tax,money;printf( “ please input your income\n ” );scanf ( “ %f” ,&income);if (income<0)printf( “ the input is error ” );else{ grade=(int)income/1000; switch(grade){ case 0 : tax=0;break;case 1 : tax=(income-1000)*0.05;break;case 2 : tax=50+(income-2000)*0.1;break;case 3 :case 4 :case 5 : tax=150+(income-3000)*0.15;break;default: tax=600+(income-6000)*0.2;}money=income-tax;printf( “ \n tax=%f, money=%f ”,tax, money);}. . . .}12. 从键盘上输入一个百分制成绩 score ,按下列原则输出其等级: score ≥ 90,等级为 A; 80≤ score<90 ,等级为 B; 70≤ score<80 ,等级为 C; 60≤ score<70 ,等级为D; score<60 ,等级为 E。
include void main(){int data;char grade;printf("Please enter the score:");scanf("%d ” , &data);switch(data/10){ case 10:case 9 : grade= ’ A’ ; break;case 8: grade= ’ B’ ; break;case 7: grade= ’ C’ ; break;case 6: grade= ’ D’ ; break;default: grade= ’ E’ ;}printf("the grade is %c ”,grade);}*13. 编程设计一个简单的计算器程序从键盘输入 2 个操作数, 1 个运算符,当运算符为加( +)、减( - )、乘( * )、除( / )时,输出计算结果#include void main(){ int data1, data2; /* 定义两个操作符 */char op; /* 定义运算符 */printf("Please enter the expression:");scanf("%d%c%d", &data1, &op, &data2); /* 输入运算表达式 */switch(op) /* 根据输入的运算符确定要执行的运算 */{ case '+': /* 处理加法 */printf("%d + %d = %d \n", data1, data2, data1 + data2); break;case '-': /* 处理减法 */printf("%d - %d = %d \n", data1, data2, data1 - data2); break;case '*': /* 处理乘法 */. . . .printf("%d * %d = %d \n", data1, data2, data1 * data2); break;case '/': /* 处理除法 */if (0 == data2) /* 为避免出现溢出错误,检验除数是否为 0*/printf("Division by zero!\n");elseprintf("%d / %d = %d \n", data1, data2, data1 / data2); break;default:printf("Unknown operator! \n");}}14. 从键盘输入 10个整数,统计其中正数、负数和零的个数,并在屏幕上输出。
include void main( ){int a[10], i,p=0,n=0,z=0;printf( “please input number ” );for(i=0;i<10;i++){scanf( “ %d,” ,&a[i]);if (a[i]>0)p++;else if (a[i]<0)n++;else z++}printf( “正数: %5d, 负数: %5d,零: n”,p,n,z);}}15、编程序实现求 1-10 之间的所有数的乘积并输出include void main( ){ int i ;long sum=1;for(i=1; i<=10; i=i+1)sum=sum*i;printf( “the sum of odd is :% l d”,sum);}16. 从键盘上输入 10 个数,求其平均值 . . .#include void main(){int a[10],i,s=0;float ave;;for(i=0;i<10;i++)scanf( “%d” ,&a[i]);for(i=0;i<10;i++)sum+=a[i];ave=(float)sum/10;printf("ave = %f\n", ave);}17、编程序实现求 1-1000 之间的所有奇数的和并输出。
include void main( ){ int i, sum=0;for(i=1; i<1000; i=i+2)sum=sum+i;printf( “ the sum of odd is :%d ” ,sum);}18. 有一个分数序列: 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13 编程求这个序列的前 20 项之和include void main(){int i,t,n=20;float a=2,b=1,s=0;for(i=1;i<=n;i++){s=s+a/b;t=a;a=a+b;b=t;}printf("sum=%6.2f",s);}19. 用数组实现以下功能:输入 5 个学生成绩,而后求出这些成绩的平均值并显示出来 . . .#include void main(){ int a[5], s=0;int i;for(i=0;i<5;i++)scanf( “ %d” ,&a[i]);for(i=0;i<5;i++)s=s+a[i];printf( “ result=%f ”,s/5.0);}20、用循环的方法构造一个 5 行 5 列的二维数组, 使主对角线上的变量为 1,其它为0,并将数组中所有项按行按列显示出来。
include void main(){ int a[5][5],i,j, s=0;for(i=0;i<5;i++)for(j=0;j<5;j++)if(i==j)a[i][j]=1;elsea[i][j]=0;for(i=0;i<5;i++){ for(j=0;j<5;j++)printf( “ %5d” , a[i][j]);printf( “ \n ”);}}21.求一个 3× 3 矩阵主对角线元素之和从键盘输入矩阵元素的值并输出和的值 .#include void main(){ int a[3][3],sum=0;int i,j;printf("Enter data:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++). . . .sum=sum+a[i][i];printf("sum=%d",sum);}22. 输入 n 的值, n 代表行数,输出如图所示的图形 ** * *********** * * * * * ( 此图为 n=6 时的输出结果 )#include void main(){ int i , k , n;printf("Enter number:\n");scanf("%d",&n);for (i = 1; i <= n; i++) /* 控制行数 */{ for (k = 1; k <= i; k++) /* 控制每行输出的 * 号个数 */printf("*");printf("\n"); } /* 输出一行后换行 */}23、从键盘输入 30 名学生的成绩数据,求其中的最高分、最低分和平均分。
提示:用数组存放成绩数据)#include#define M 30void main ( ){ float score[M], max , min, aver; int i ;printf( “please input score: \n ” );for(i=0; iscore[i]) min=score[i]; aver+=score[i];. . . .}printf( “max=%f, min=%f,aver=%f ” , max, min, aver/M);}24. 从键盘输入某班学生某门课的成绩及其学号(班级人数最多 40 人,具体人数由键盘输入),输出该班最高分和最低分及其学生学号;并输出该班该课程的总分和平均分请编写程序include #define ARR_SIZE 40void main(){ float score[ARR_SIZE], maxScore,minScore,sum;int n, i;long maxNum, minNum,num[ARR_SIZE];printf("Please enter total number:");scanf("%d", &n);printf("Please enter the number and score:\n");for (i=0; i maxScore){ maxScore = score[i];maxNum = num[i];}else if (score[i] < minScore){ minScore = score[i]; minNum = num[i];}sum=sum+score[i];. . . .}printf("maxScore = %.0f, maxNum = %ld\n", maxScore, maxNum); printf("minScore = %.0f, minNum = %ld\n", minScore, minNum);printf("sum = %.1f, average = %.1f\n", sum, sum/n);}25. 将一个有 5 个元素的数组中的值 ( 整数 ) 按逆序重新存放。
例 : 原来顺序为 :8 、 6、 5、 4、1,要求改为 1、 4、 5、 6、8 #define N 5#include void main(){int a[N],i,temp;printf( “ enter array a:\n ”);for(i=0;ivoid main(){int a[2][3], b[3][2],i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)scanf( “ %d” ,&a[i][j]);for(i=0;i<3;i++)for(j=0;j<2;j++)b[i][j]=a[j][i];for(i=0;i<3;i++){for(j=0;j<2;j++). . . .printf("%5d",b[i][j]);printf("\n ” );}}29、从键盘输入 10 名学生的成绩数据,按成绩从高到低的顺序排列并输出。
(提示:用数组存放成绩数据)#include void main(){ int a[10]; int i,j,temp; printf("input score:\n"); for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");for(i=1;i<10;i++)for(j=0;j<9;j++)if(a[j]void main( ){ int i, j ,a[5][3];printf( “ Enter data:\n ” );for(i=0;i<5;i++)for(j=0;j<3;j++)scanf( “ %d”,&a[i][j]);for(i=0;i<5;i++)for(j=0;j<3;j++)sum=sum+a[i][j];printf( “ sum=%5d\n” ,sum);}. . . .32、从键盘上输入一个 4*3 的整型数组, 找出数组中的最小值及其在数组中的下标。
#include void main(){ int a[4][3], i , j ,min,m,n; printf("Please enter data:"); for (i=0; i<4; i++)for (j=0; j<3; j++)scanf( “ %d” ,& a[i][j]);min=a[0][0];m=0; n=0;for (i=0; i<4; i++)for (j=0; j<3; j++)if (a[i][j]#include #define ARR_SIZE 80void main(){char str[ARR_SIZE];int len, i, letter = 0, digit = 0, space = 0, others = 0; printf("Please input a string:");gets(str);len = strlen(str);for (i=0; i= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')letter ++; /* 统计英文字符 */else if (str[i] >= '0' && str[i] <= '9' )digit ++; /* 统计数字字符 */. . . .elseothers ++; /* 统计其它字符的个数 */}printf("English character: %d\n", letter);printf("digit character: %d\n", digit);printf("other character: %d\n", others);}*36 、猜数游戏。
系统随机产生一个整数,通过键盘输入数据猜数,猜对为止,并要求统计猜的次数注: rand() 函数可以产生 0~ 32767 间的正整数,程序中需包含 stdlib.h include #include void main(){int magic;int guess;int counter;magic = rand() % 100 + 1;counter = 0;do{printf("Please guess a magic number:");scanf("%d", &guess);counter ++;if (guess > magic)printf("Wrong!Too high!\n");else if (guess < magic)printf("Wrong!Too low!\n");}while (guess != magic);printf("Right!\n");printf("counter = %d\n", counter);}38. 随机输入若干个学生的体重,以输入负数或零结束,分别求最重和最轻的体重,并计算平均体重include void main(){ int n=0;float weight,max=0,min=10,sum=0,ave;. . . .printf( “please input the weight: ”);scanf( “ %f” ,& weight);while(weight>0){ sum=weight+sum; n++;if (weightmax)max=weight;scanf( “ %f” ,& weight);}if (n>0){ ave=sum/n;printf("maxweight = %f\n " , max);printf("minweight = %f\n", min);printf("ave = %f\n",ave);else printf("NO VALID DATA ” );}40. 编写程序,其中自定义一函数,用来判断一个整数是否为素数,主函数输入一个数,输出是否为素数。
include #include int IsPrimeNumber(int number){ int i;if (number <= 1)return 0;for (i=2; i