资源描述
C语言习题集3.11输入AF中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。输入格式:B输出格式:26#includeint main(void) char ch; int sum; ch=getchar(); sum=ch-A+10+15; printf(%dn,sum); return 0;3.12输入三个整数,求其平均值。输入格式:3 5 7输出格式:5#include int main(void)int a,b,c,aver; scanf(%d %d %d,&a,&b,&c); aver=(a+b+c)/3;printf(%dn,aver);return 0;3.13根据 c=5/9*(f-32) 公式,输入华氏温度f,求摄氏温度c,结果精确到小数点后两位。输入格式:80.0输出格式:26.67#includeint main(void)float f,c;scanf(%f,&f);c=5.0/9*(f-32);printf(%.2fn,c);return 0;3.14输入一个四位正整数,求其各位数字之和。例如,1357的各位数字之和为1 + 3 + 5 + 7 = 16。输入格式:1357输出格式:16#includeint main(void)int num;int a,b,c,d,total;scanf(%d,&num);a=num/1000;b=(num-a*1000)/100;c=(num-a*1000-b*100)/10;d=num-a*1000-b*100-c*10;total=a+b+c+d;printf(%dn,total);return 0;3.15输入一大写字母,输出对应的小写字母。输入格式:A输出格式:a#includeint main(void) char c1,c2; scanf(%c,&c1); c2=c1+32; printf(%c,c2); 3.16输入两个整数分别赋值给变量a和b,将a和b的值互换,输出a、b的值。输入格式:3 5输出格式:5 3#include int main(void) int a,b,temp; scanf(%d%d,&a,&b); temp=a; a=b; b=temp; printf(%d %d,a,b); return 0; 3.21输入一小写字母,输出对应的大写字母。输入格式:b输出格式:B#includeint main(void)char ch;ch=getchar();putchar(ch-32);putchar(n);3.22输入任意四位整数,以反序的方式输出该整数。例如:输入1234,输出4321输入格式:1357输出格式:7531#includeint main(void) char c1,c2,c3,c4; scanf(%c%c%c%c,&c1,&c2,&c3,&c4); printf(%c%c%c%cn,c4,c3,c2,c1); 3.23输入两个电阻值,求它们并联和串联的电阻值,结果保留两位小数。并联和串联的电阻值的计算公式为:并联电阻:PR=(R1*R2)/(R1+R2) 串联电阻:RS=R1+R2输入格式:3 5输出格式:1.88 8.00#include int main(void)double r1, r2, pr, rs;scanf(%lf%lf, &r1, &r2);pr =(r1 * r2)/ (r1 + r2) ;rs = r1 + r2;printf(%.2f %.2fn, pr, rs);return 0;3.24使用getchar函数分别输入两个字符变量c1和c2,要求c1、c2均是字符0到9中的一个字符。将c1、c2中的值转换成相应的数字,如将字符1转换为数字1,并输出这两个数相加的结果。输入格式:26输出格式:8#includeint main(void) char c1,c2; c1=getchar(); c2=getchar(); c1=c1-48; c2=c2-48; printf(%dn,c1+c2); return 0;3.25输入梯形的上下底边长度和高,计算梯形的面积,保留一位小数。计算梯形面积的公式如下:S=h*(a+b)/2输入格式:3 5 4输出格式:16.0#includeint main(void) int a,b,h; float S; scanf(%d%d%d,&a,&b,&h); S=h*(a+b)/2.0; printf(%.1f,S); return 0; 3.26输入圆的半径,求圆的周长和面积,结果精确到小数点后两位。已知圆周率为3.14159。输入格式:5.0输出格式:31.42 78.54#include void main() double r,l,s; scanf(%lf,&r); l=2*3.14159*r; s=3.14159*r*r; printf(%.2f %.2fn,l,s);4.1输入整数a和b,如果a2 + b2 大于100,则输出a + b的值;否则,输出a - b的值。输入格式:3 5输出格式:-2#includevoid main()int a,b;scanf(%d%d,&a,&b);if (a*a+b*b100)printf(%dn,a+b);else printf(%dn,a-b);4.2输入整数n,如果n既是5的整倍数又是7的整倍数,则输出yes;否则输出no。输入格式:35输出格式:Yes#include void main()int n;scanf(%d,&n);if(n%5 = 0 & n%7 = 0)printf(yesn);else printf(non);4.3商场为促销实行打折销售商品,假定商品价格为p元,编程计算某顾客购买x件商品的应付金额,保留一位小数。先输入价格p,再输入购买的件数x。计算公式sum = p * x * (1 - d) 其中,sum为应付金额,d为折扣(x5时:d=0;5=x10时:d=1%;10=x21时:d=2%;21=x30时:d=4%;30=x时:d=6%;)。 输入格式:9.9 15输出格式:145.5#includevoid main()int x;float p,sum,d;scanf (%f%d,&p,&x); if(x5) d=0; else if(x10) d=0.01; else if(x21) d=0.02; else if(x30) d=0.04; else d=0.06;sum=p*x*(1-d); printf(%.1f,sum);4.4输入09或af或AF中的一个字符,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。输入格式:6输出格式:21#includevoid main()char ch;ch=getchar();if(ch=0&ch=A&ch=a&ch=f)printf(%dn,ch-a+10+15);elseprintf(Iaput Error!n);4.5已知一张如下所示的时间表:*Time*1 morning2 afternoon3 night*Please input your choice:根据输入的序号显示相应的问候信息:输入1时,输出Good morning;输入2时,输出Good afternoon;输入3时,输出Good night;对于其他的输入,则输出error。输入格式:2输出格式:Good afternoon#includeint main(void)int choice;scanf(%d,&choice);switch(choice)case 1:printf(Good morningn);break;case 2:printf(Good afternoonn);break;case 3:printf(Good nightn);break;default:printf(errorn);4.6输入3个整数,要求按从小到大的顺序输出。输入格式:5 3 1输出格式:1 3 5#includeint main(void)int a,b,c,t; scanf(%d%d%d,&a,&b,&c); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d %d %dn,a,b,c);return 0;4.7输入两个实数和一个算术运算符(+,-,*,/),根据运算符执行相应的运算并输出运算结果,保留一位小数。(提示:运算符先输入,两个实数后输入)输入格式:+ 1.5 2.1输出格式:3.6#includeint main(void)double a,b;char op;scanf(%c %lf%lf,&op,&a,&b);if (op=+) printf(%.1fn,a+b); else if(op=-) printf(%.1fn,a-b); else if(op=*) printf(%.1fn,a*b); else printf(%.1fn,a/b); return 0;4.8输入3个整数,要求按从大到小的顺序输出。输入格式:1 3 5输出格式:5 3 1#includeint main(void)int a,b,c,t; scanf(%d%d%d,&a,&b,&c); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d %d %dn,a,b,c);return 0;5.11编写程序,接收两个整数num1和num2,找出这两个数之间所有奇数的和。输入格式:1 100输出格式:2500#includeint main(void)int num1,num2,t,i,sum=0;scanf(%d%d,&num1,&num2);if(num1num2)t=num1;num1=num2;num2=t;if(num1%2=0)num1+;for(i=num1;i=num2;i+=2)sum+=i;printf(%d,sum);5.12输入10个分数(浮点型),去掉最高分和最低分后求平均分,保留一位小数。输入格式:0 1 2 3 4 5 6 7 8 9输出格式:4.5#include void main() int i; double sum=0,a,max,min; scanf(%lf,&a);sum=max=min=a;for(i=1;i=9;i+) scanf(%lf,&a); if(maxa) min=a; sum=sum+a; sum=sum-max-min; printf(%.1f,sum/8);5.13输入n,求 1 * 2 * 3 * . * n 的值。输入格式:10输出格式:3628800#includeint main(void)int i,n,k=1;scanf(%d,&n);for(i=1;i=n;i+)k=k*i;printf(%d,k);5.14根据用户输入的正整数a(19)和正整数n,求a + aa + . + aa.a(n个a)的值。例如,当用户输入a为6,n为5时,结果为74070。输入格式:6 5输出格式:74070#include void main() int a,n,i,t;long int sum=0;scanf(%d%d,&a,&n);t=a; for(i=1;i=n;i+) sum=sum+t;t=t*10+a;printf(%d,sum);5.15已知函数头为 void avg(void),函数avg的功能:输入10个分数(浮点型),去掉最高分和最低分,求平均分,保留一位小数。编写main函数并调用函数avg。输入格式:0 1 2 3 4 5 6 7 8 9输出格式:4.5#include void avg(void)int i;float sum,n,max,min,aver; scanf(%f,&n); max=min=n; sum=n;for(i=2;in)?max:n; min=(minn)?min:n; sum+=n; aver=(sum-max-min)/8;printf(%.1fn,aver);5.16根据用户输入的正整数n,求 1- 1/2 + 1/3 - 1/4 +.+ (-1)(n+1)/n 的值。保留两位小数。输入格式:2输出格式:0.50#include void main() int i,flag=1,n; double sum = 0; scanf(%d,&n); for ( i=1;i=n;i+ ) sum +=1.0/i*flag ; flag=-flag; printf(%.2fn,sum);5.21输入n,求1! + 2! + 3! +. + n! 的值。输入格式:10输出格式:4037913#includeint main(void) int sum=0,i,n,s=1; scanf(%d,&n); for(i=1;i=n;i+) s*=i; sum+=s; printf(%dn,sum); 5.22根据用户输入的正整数n,求 2/1 + 3/2 + 5/3 + 8/5 + 13/8 + .的前n项之和。保留两位小数。输入格式:2输出格式:3.50#include void main(void)int a = 1, b = 2, c, i, n;double d,sum=0;scanf(%d,&n);for(i = 1; i = n; i+) d=1.*b/a; sum+=d;c = a + b;a = b;b = c;printf(%.2f,sum);5.23根据用户输入的正整数n,求 1 - 2/3 + 3/5 - 4/7 + 5/9 - 6/11 + .的前n项之和。保留两位小数。输入格式:2输出格式:0.33#includeint main(void) int i, n,flag=1; double sum=0; scanf(%d,&n); for(i=1;i=n;i+) sum+=flag*1.0*i/(2*i-1); flag=-flag; printf(%.2fn,sum);return 0;5.24根据用户输入的正整数n,求数列1, 2, 3, 5, 8, 13, 21, 34, .中第n项的值。输入格式:25输出格式:121393#include int main(void)int a = 1, b = 2, c,n, i; scanf(%d,&n);for(i = 3; i=n; i+)c = a + b;a = b;b = c; printf(%dn, c); return 0;5.25输入一行字符,统计其中英文字母、数字字符、空格和其他字符的个数。输入格式:kf 3f5;p0 8d?输出格式:5 4 2 4#include int main(void) char c; int eng=0,dig=0,space=0,others=0; scanf(%c,&c);while (c!=n) if(c=a&c=A&c=0&c=9) dig+; else if(c= ) space+; else others+;scanf(%c,&c); printf(%d %d %d %dn,eng,dig,space,others); return 0;5.26根据用户输入的正整数n,输出数列0, 1, 2, 3, 6, 11, 20, 37, 68,.中第n项的值。输入格式:4输出格式:3#includevoid main() int i,a=0,b=1,c=2,d,n; scanf(%d,&n); for(i=4;i=n;i+) d=a+b+c; a=b; b=c; c=d;printf (%dn,d);5.31输入若干整数,以-1结束,去掉最大值和最小值,求平均值,保留一位小数。输入格式:1 3 5 7 9 -1输出格式:5.0#include void main ()int score;double sum=0,n=0,avg,max,min,b;scanf(%d,&score);max=min=b=score;while(score!=-1)if(scoremax)max=score;if(scoremin)min=score;sum+=score;n+;scanf(%d,&score);avg=(sum-max-min)/(n-2);printf(%.1fn,avg);5.32输入两个正整数,求最大公约数。输入格式:15 5输出格式:5#include int main (void )int i,m, n, temp,maxgy;scanf (%d%d, &m, &n); if(mn) temp=m;m=n;n=temp; for(i=m;i=1;i-) if(m%i=0&n%i=0) maxgy=i;break; printf(%dn,maxgy);return 0;5.33输入两个正整数,求最小公倍数。输入格式:5 15输出格式:15#include int main (void )int i,m, n, temp,maxgy;scanf (%d%d, &m, &n); if(mn) temp=m;m=n;n=temp; for(i=m;i+) if(i%m=0&i%n=0) maxgy=i;break; printf(%dn,maxgy);return 0;5.34输入一个正整数n,求n是几位数。输入格式:1357输出格式:4#include main(void) int n, sum = 0,k=0;scanf(%d, &n);while (n) n /= 10;k+;printf(%dn, k); 5.35输入一个正整数n,判断n是否为回文数。所谓回文数,是从左到右读这个数和从右到左读这个数是一样的。例如,98789是回文数。如果是,输出yes;如果不是,则输出no。输入格式:135797531输出格式:Yes#include main(void) int n,m, sum = 0,k=0;scanf(%d, &n);m=n;while (m) sum = sum*10 + m%10; m /= 10;if (sum=n) printf(yes);else printf(no);5.36根据输入的行数输出图案。例如,输入的行数为7,则输出如下图所示的图案(注:星号之间没有空格)。 * * * * * * * * * * * * * * * * * * * * * * * * *输入格式:5输出格式: * * * *#include void main()int i,j,n;scanf(%d,&n);for(i=-n/2;i=n/2;i+)for(j=1;j=abs(i);j+)printf( );for(j=1;j=n-2*abs(i);j+)printf(*);printf(n);6.11输入10个数到数组t中,求最小值及最小值在数组t中的下标。输入格式:9 7 5 3 1 0 2 4 6 8输出格式:0 5#include void main() int x10,i,min,j,k;for(i=0;i 10;i+) scanf(%d,&xi); min=x0;k=0; for(j=1;jxj) min=xj;k=j; printf(%d %dn,min,k);6.12输入10个数到数组t中,再输入x,如果有与x相等的数组元素,输出该数组元素的下标;否则,输出-1。输入格式:9 7 5 3 1 0 2 4 6 85输出格式:2#include void main() int t10,i,x,flag=0; for(i=0;i 10;i+) scanf(%d,&ti); scanf(%d,&x); for (i=0;i10;i+) if (x=ti) flag=1; printf(%d, i);break; if(flag=0) printf(-1);6.13输入10个整数到数组t中,按升序排序,输出下标为6的数组元素。输入格式:9 7 5 3 1 0 2 4 6 8输出格式:6#includeint main(void)int t10,i,j,temp;for(i=0;i10;i+)scanf(%d,&ti);for(i=1;i10;i+)for(j=0;jtj+1) temp=tj;tj=tj+1;tj+1=temp;printf(%d,t6);return 0; 6.14输入九个整数到数组t中数组长度为奇数,将数组t中的数组元素倒置,输出倒置以后下标为5的数组元素。例如,数组t中九个数组元素依次为2、4、6、8、9、7、5、3、1,倒置以后九个数组元素依次为1、3、5、7、9、8、6、4、2,下标为5的数组元素为8。已知变量声明和数组声明为“int i, tmp, t9;”,要求不再声明其他的变量或数组。输入格式:9 7 5 3 1 2 4 6 8输出格式:3#includeint main(void) int i,tmp,t9; for(i=0;i9;i+) scanf(%d,&ti); for(i=0;i9/2;i+) tmp=ti; ti=t8-i; t8-i=tmp; printf(%dn,t5); return 0; 6.15求3行5列二维数组中每列数组元素的最小值,并输出列下标为3的这一列的最小值。输入格式:-3 -1 -5 -7 -9-8 -6 -4 -2 -8-2 -3 -4 -5 -6输出格式:-7#includeint main(void) int i,j,t35,max; for(i=0;i3;i+) for(j=0;j5;j+) scanf(%d,&tij); max=t03; for(i=1;i=ti3) max=ti3; printf(%d,max);return 0;6.16求3行5列二维数组中的最小值,及最小值在数组中的行号和列号,并输出。输入格式:3 1 5 7 98 6 4 2 01 3 -1 3 1输出格式:-1 2 2#includeint main(void) int i,j,t35,max,m,n; for(i=0;i3;i+) for(j=0;j5;j+) scanf(%d,&tij); max=t00; for(i=0;i3;i+) for(j=0;jtij) max=tij;m=i;n=j; printf(%d %d %d,max,m,n);return 0;6.21输入10个数到数组t中,求最大值及最大值在数组t中的下标。输入格式:9 7 5 3 1 0 2 4 6 8输出格式:9 0#include void main() int i,a,m,t10,max;for(i=0;i10;i+)scanf(%d,&ti);max=t0;a=0;for(m=1;m10;m+)if(maxtm)max=tm;a=m;printf(%d %d,max,a);6.22输入10个整数到数组t中,按降序排序,输出下标为5的数组元素。输入格式:9 7 5 3 1 0 2 4 6 8输出格式:4void main()int a,b,k,t10;for(a=0;a10;a+)scanf(%d,&ta);for(a=1;a10;a+)for(b=0;b10-a;b+)if(tbtb+1)k=tb;tb=tb+1;tb+1=k;printf(%d,t5);6.23输出数组s中字符串的子串,子串从sbegin开始,长度为len。char s80;int begin, len;gets(s);scanf(%d%d, &begin, &len);输入格式:how do you do?4 9输出格式:do you doint main(void)char s80;int i,begin, len;gets(s);scanf(%d%d, &begin, &len);for(i=begin;ibegin+len;i+) printf(%c,si);return 0;6.24输入6个整数到数组t中,求最小值。输入格式:9 7 5 3 1 0输出格式:0#includeint main(void) int a6,i,min; scanf(%d,&a0); min=a0; for(i=1;i6;i+) scanf(%d,&ai); min=(minai)?min:ai; printf(%dn,min);return 0;6.25输入10个整数到数组t中数组长度为偶数,将数组t中的数组元素倒置,输出倒置以后下标为5的数组元素。例如,数组t中10个数组元素依次为1、3、5、7、9、8、6、4、2、0,倒置以后10个数组元素依次为0、2、4、6、8、9、7、5、3、1,下标为5的数组元素为9。已知变量声明和数组声明为“int i, tmp, t10;”,要求不再声明其他的变量或数组。输入格式:9 7 5 3 1 0 2 4 6 8输出格式:1#includeint main(void) int t10,i,temp; for(i=0;i10;i+) scanf(%d,&ti); for(i=0;i10/2;i+) temp=ti; ti=t10-1-i; t10-1-i=temp; printf(%dn,t5); return 0; 6.26已知数组声明为int a10 = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90;,10个数组元素是按升序排列的。输入一个整数n,如果没有与n相等的数组元素,输出-1;否则,删除与n相等的数组元素,要求剩余的九个数组元素是按升序排列的,输出下标为6的数组元素。输入格式:100输出格式:-1#includeint main(void) int a10=0, 10, 20, 30, 40, 50, 60, 70, 80, 90; int n,i,flag=1; scanf(%d,&n);for(i=0;i10;i+) if(n=ai) flag=0; break; if(flag=1) printf(-1n); else for(;i10;i+) ai=ai+1; printf(%dn,a6); return 0;6.31求3行5列二维数组中每列数组元素的最大值,并输出列下标为3的这一列的最大值。输入格式:-3 -1 -5 -7 -9-8 -6 -4 -2 -8-2 -3 -4 -5 -6输出格式:-2#includeint main(void) int i,j,t35,max; for(i=0;i3;i+) for(j=0;j5;j+) scanf(%d,&tij); max=t03; for(i=1;i3;i+) if(max=ti3) max=ti3; printf(%dn,max);return 0;6.32判断数组s中的字符串是不是回文。一个字符串从左向右读和从右向左读是一样的,该字符串是回文。例如,字符串abcdedcba是回文。如果是,输出yes;如果不是,则输出no。char s80;gets(s);输入格式:abcdcba输出格式:Yes#include#includeint main(void) char s80; int i ,t,flag=1; gets(s); t=strlen(s); for(i=0;it/2;i+) if(si!=st-1-i) flag=0; printf(no); break; if(flag=1) printf(yes); return 0; 6.33输入6个整数到数组t中,求最大值。输入格式:9 7 5 3 1 0输出格式:9#include int main(void) int i,t6,max; for(i=0;i6;i+) scanf(%d,&ti);max=t0; for(i=1;i6;i+) if (maxti) max=ti; printf(%dn,max);return 0;6.34不调用库函数strcpy,将以下数组s1中的字符串复制到数组s2中,并输出数组s2中的字符串。char s180, s280;gets(s1);输入格式:hello输出格式:Hello(错了)#includeint main(void) int i=0:char s180,s280;printf(输入一个字符串);gets(s1);while(s1i!=10)s2i=s1i;i+;s2i=!0;printf(复制的字符串为);puts(s2);return 0;6.35求3行5列二维数组中的最大值,及最大值在数组中的行号和列号,并输出。输入格式:-3 -1 -5 -7 -9-8 -6 -4 -2 -8-2 -3 -4 -5 -6输出格式:-1 0 1#includeint main(void) int i,j,t35,max,m,n; for(i=0;i3;i+) for(j=0;j5;j+) scanf(%d,&tij); max=t00; for(i=0;i3;i+) for(j=0;j5;j+) if(maxtij) max=tij;m=i;n=j; printf(%d %d %dn,max,m,n);return 0;6.36输入10个整数到数组t中数组长度为偶数,将数组t中的数组元素倒置,输出倒置以后下标为5的数组元素。例如,数组t中10个数组元素依次为1、3、5、7、9、8、6、4、2、0,倒置以后10个数组元素依次为0、2、4、6、8、9、7、5、3、1,下标为5的数组元素为9。已知变量声明和数组声明为“int i, tmp, t10;”,要求不再声明其他的变量或数组。输入格式:9 7 5 3 1 0 2 4 6 8输出格式:1#includeint main(void) int t10,i,tmp; for(i=0;i10;i+) scanf(%d,&ti); for(i=0;i5;i+) tmp=ti; ti=t9-i; t9-i=tmp; printf(%dn,t5);return 0;
展开阅读全文