c语言第二次测验

221116测验2已完成

1

【程序题】分数转换为等级。分数与成绩等级的对应关系是:90~100为A,80~89为B,70~79为C,60~69为D,0~59为E。 编程要求:①用户在提示符score:后面输入一个百分制分数,程序将分数转换为成绩等级A、B、C、D、E,并以grade=X(X为A、B、C、D、E之一)的形式输出;②程序输出结果后,继续显示提示信息score:,等待用户的下一次输入,并根据输入的分数输出相应的成绩等级;③当用户在提示信息score:后输入的成绩大于100分,程序不予处理,而是继续输出提示信息score:;④当用户在提示信息score:后输入的成绩为负数,程序输出Bye!后结束。下面是程序的运行效果:

我的答案:

#include<stdio.h>
int main()
{char g;int n;
do{printf("score:");
scanf("%d",&n);
if(n<0)
printf("Bye!\n");
else if(n>=0&&n<=100)
{if(n>=90&&n<=100)g='A';
if(n>=80&&n<90)g='B';
if(n>=70&&n<80)g='C';
if(n>=60&&n<70)g='D';
if(n>=0&&n<60)g='E';
printf("grade=%c\n",g);}
}while(n>=0);
return 0;
}

2

【程序题】数字之和为5的数 。编程要求:①用户在提示符m,n:后面输入两个正整数,程序将m和n之间(包括m和n本身)所有“各位数字之和为5”的数的个数输出,输出形式是count=A,其中A就是统计出的符合条件的整数个数;②程序输出结果后,继续显示提示信息m,n:,等待用户的下一次输入;③当用户在提示信息m,n:后输入的两个数中至少有一个数小于等于0,程序输出Bye!后结束。下面是程序的运行效果:

我的答案:

#include<stdio.h>
int main()
{int m,n,i,a,b,c,d,sum,count;
do{
sum=count=0;
printf("m,n:");
scanf("%d%d",&m,&n);
if(m<=0||n<=0)
printf("Bye!\n");
else{a=(m>n?n:m);
b=(m>n?m:n);
for(i=a;i<=b;i++)
{c=i;sum=0;
while(c!=0){d=c%10;
sum=sum+d;
c=c/10;
}
if(sum==5)
count++;
}
printf("count=%d\n",count);
}
}while(m>0&&n>0);
}

3

【程序题】中空沙漏形。在提示符size:后输入整数n,程序基于n的值,输出相应的图案,如下是n=5时的图案:注意:①程序输出图案后,继续显示提示符size:,等待用户的下一次输入;直到用户输入的值小于等于0为止;②当用户在提示符size:后输入的值小于等于0,程序输出Bye!后结束。下面是程序的运行效果:

我的答案:

#include<stdio.h>
int main()
{int i,j,n,k;
do{
printf("size:");
scanf("%d",&n);
if(n<=0)
printf("Bye!\n");
else
{
for(i=1;i<=n;i++)
{
if(i==1)
{
for(j=1;j<=2*n-1;j++)
printf("*");
printf("\n");
}
else
{
for(j=1;j<=2*n-i;j++)
{
if(j==i||j==2*n-i)
printf("*");
else
printf(" ");
}
printf("\n");
}
}
for(i=n-1;i>=1;i--)
{
if(i==1)
{
for(j=1;j<=2*n-1;j++)
printf("*");
printf("\n");
}else
{
for(j=1;j<=2*n-i;j++)
{
if(j==i||j==2*n-i)
printf("*");
else
printf(" ");
}
printf("\n");
}
}
}
}while(n>0);
}

4

【程序题】折纸厚度。将一张纸对折,请问折几次后纸的厚度可超过100米。编程要求:在提示符thickness:后,用户输入纸的厚度(单位是毫米)。程序以times=X的形式给出对折几次后,纸的总厚度可以超过100米。注意:程序重复运行,每输入一个厚度,程序给出一个结果,直到用户输入的厚度thickness小于等于0时,程序输出Bye!,然后结束程序运行结果:

我的答案:

#include<stdio.h>int main(){double a;int n;do{n=-1;printf("thickness:");scanf("%lf",&a);if(a<=0)printf("Bye!\n");else{while(a<=100000){a*=2;n++;}printf("times=%d\n",n);}}while(a>0);return 0;}

5

【程序题】译密码。明码变为密码的规则: ①大写字母A~V分别对应变换为ASCII码表上其后的第4个字符,即E~Z;而W~Z对应变换为A~D;②小写字母a~v分别对应变换为ASCII码表上其后的第4个字符,即e~z;而w~z对应变换为a~d;③非字母字符不变。编程要求:①在提示信息plaintext:后面,用户输入一段字符,其中可以包含空格,按Enter表示输入结束。程序以ciphertext=STR形式输出与输入的所有字符一一对应的密码字符;②程序输出结果后,继续显示提示信息plaintext:,等待用户的下一次输入;③当用户在提示信息plaintext:后直接按下Enter,程序输出Bye!后结束。下面是程序的运行效果:

我的答案:

#include<stdio.h>



int main()



{



 char L;



 char l;



 int e = 0;



 do {

 printf("plaintext:");

e = 0;

 L = getchar();

 if (L == '\n' && e == 0) { printf("Bye!\n");break; }



 printf("ciphertext=");



 



 while (L != '\n') {

 if ((L >= 65 && L <= 86) || (L >= 97 && L <= 118)) { l = L + 4;printf("%c", l);

 }



 else if ((L >= 87 && L <= 90) || (L >= 119 && L <= 122)) { l = L - 22;printf("%c", l);

 }



 else if (L == ' ') { printf(" "); }

 else printf("%c", L);

 e = 1;

 L = getchar();

 }

 printf("\n");

 } while (1);



}

6

【程序题】求平方根。用迭代法求a的平方根x :①迭代公式为

;②要求前后两次求出的x的差的绝对值小于1e-5。编程要求:①程序显示number:提示信息,等待用户输入a的值,用户按Enter后,程序以sqrt(a)=X.YZ的形式输出a的平方根(a及其平方根都是double型,输出时都保留2位小数),并以times=A显示出迭代次数(迭代次数为整型数);②程序输出结果后,再次显示number:提示,等待用户输入下个数;③当用户在number:后输入的数小于等于0时,程序输出Bye!结束。注意:对迭代公式的起始值做特别规定:x0为a、x1为a/2。下面是程序的运行效果:

我的答案:

#include<stdio.h>



#include<math.h>





int main()



{

 double a;



 double x, X;



 int count = 0;



 do {

 printf("number:");



 scanf("%lf", &a);



 if (a <= 0) { printf("Bye!");break; }



 x = a;



 X = a / 2;



 count = 0;



 while (fabs(x - X) > 1e-5)



 {

 x = X;



 X = (1.0 / 2) * (X + (a / X));



 count++;



 }



 if (x > X)X = x;



 printf("sqrt(%.2lf)=%.2lf,times=%d", a, X, count);



 printf("\n");



 } while (a > 0);



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApophisJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值