c语言考试作业

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循环中,sum的值会改变,所以在每个大循环中都要规定sum的初始值为0

while(c!=0)

{

d=c%10;//取余运算:求数字的个位数

sum=sum+d;

c=c/10;//通过将数字除以10,去掉数字的小数部分(利用int型数据的定义)

}

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 c;

int a;

do

{

a=0;

printf("plaintext:");

while((c=getchar())!='\n')

{

a++;

if(a==1)

printf("ciphertext=");

if((c>='A'&&c<='V')||(c>='a'&&c<='v'))

printf("%c",c+4);

else if((c>='W'&&c<='Z')||(c>='w'&&c<='z'))

printf("%c",c-22);

else

printf("%c",c);

}

if(a==0)

printf("Bye!\n");

else

printf("\n");

}while(a>0);

return 0;

}

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,x0,x1,sqrt;

int t;

do

{

t=0;

printf("number:");

scanf("%lf",&a);

if(a<=0)

printf("Bye!\n");

else

{

    x0=a;

    x1=a/2;

    while(fabs(x0-x1)>=1e-5)

{

x0=x1;

x1=(x1+a/x1)/2;

t++;

}

    printf("sqrt(%.2f)=%.2f,times=%d\n",a,x1,t);

}

}while(a>0);

return 0;

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值