软工C语言期中期末考试编程大题

  • Post author:
  • Post category:其他


1.输入四位数,分别求该数各个数位上的数字之和。例如,输入 1234,输出 10。

#include <stdio.h>
void main()
{ 
    int n,sum=0;
    int a,i;
    scanf("%d",&n);
    for(i=1;i<=4;i++)
    {
        a=n%10;
        sum+=a;
        n=n/10;
    }
    printf("%d",sum);
    return 0;
}

2.运输公司按照以下方法计算运费。路程(s)越远则每公里运费越低。方法如下:

设每公里每吨货物基本运费为p,货物重w(吨),距离为s(km),折!扣为d,总运费计算公式为

f = p * w * s * (1 − d)

设计算法编写程序,要求输入p、w和s,计算总运费(用if语句或者switch语句编写)。

#include <stdio.h>
void main()
{ 	float p,w,d,f;
	int s;
	//printf("请输入基本运价、重量、距离:");
	scanf("%f%f%d",&p,&w,&s);
	/**************begin******************/
	if(s<250)
		d=0.00;
	else if(s>=250&&s<500)
		d=0.02;
	else if(s>=500&&s<1000)
		d=0.05;
	else if(s>=1000&&s<2000)
		d=0.08;
	else if(s>=2000&&s<3000)
		d=0.10;
	else if(s>=3000)
		d=0.15;
	



    /***************end****************/
    
	f=p*w*s*(1-d);
	printf("总运费为:%f \n",f);
}

3.编写程序,生成两个字符串str1和str2,比较两个字符串的大小(不得使用strcmp函数)。

输入 字符串 abc ABC

输出 abc 大于 ABC

#include <stdio.h>
#include <string.h>
int main()
{ char str1[100],str2[100];
/**********begin**********/
int i,t=1,m;
gets(str1);
gets(str2);
m=strlen(str1);
for(i=0;i<m;i++)
{
    printf("%c",str1[i]);
}
for(i=0;i<m;i++)
{
    if(str1[i]>str2[i])
    {
        printf(" 大于 ");
        t=0;
        break;
    }
    else if(str1[i]<str2[i])
    {
        printf(" 小于 ");
        t=0;
        break;
    }
}
if(t==1)
printf(" 等于 ");
for(i=0;i<m;i++)
printf("%c",str2[i]);


/**********end**********/
return 0;
}

4.编写函数fun(int m),其功能是:求1/2+1/4+1/6+…+1/2m 的值,并将计算结果以函数返回值形式返回。

在主函数中输入一个正整数m,调用fun函数求1/2+1/4+1/6+…+1/2m 的值,并将计算结果输出。

示例:

输入:9

输出:1.414484

#include<stdio.h>

float fun(int mm)
{
	//程序语句
	double t;
	int i;
	t=0;
	for(i=1;i<=mm;i++)
	{
		t=t+1.0/(2*i);
	}
	return t;
} 
int main()
{
	
	//程序语句
	int m;
	double n;
	scanf("%d",&m);
	n=fun(m);
	printf("%f",n);
	return 0;	
}

5.

任务描述

本关要求编写一个

C

语言程序,实现字符串大小写字母的转换。

相关知识

编程要求

请仔细阅读右侧代码,根据方法内的提示,在

Begin - End

区域内进行代码补充,具体任务如下:

如果给出的字符是大写字母,则将其转换成小写字母输出,如果该字符是小写字母,则将其转化成大写字母输出。

测试说明

平台会对你编写的代码进行测试,若是与预期输出相同,则算通过。

测试输入:

A

。 预期输出:

a

测试输入:

b

。 预期输出:

B

#include<stdio.h>

int main()
{
	/**********begin*********/
	char x='a';
	scanf("%c",&x);
	if(x>='A'&&x<='Z')
	{
		x=x+32;
	}
	else
	{
		x=x-32;
	}
	printf("%c",x);
	/*********end*********/
}

6.

本关需要完成一个输出某个三位数各个位上的数字的小程序。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin – End区域内进行代码补充,具体任务如下:

输入一个三位数的整数,分别输出其个位、十位、百位上的数字。

注意:

输出的各数字间有一个空格。

举例说明:

测试输入:


345


预期输出:


5 4 3

#include<stdio.h>
int main()
{
    /*********begin*********/
    int a,b,c,d;
    scanf("%d",&a);
    b=a/100;
    c=(a-b*100)/10;
    d=(a-b*100-c*10);
    printf("%d %d %d",d,c,b);
    
    /*********end*********/
    return 0;
}

7.

任务描述

设计算法编写程序,输入年和月份,判断该月所对应的天数。月份为1、3、5、7、8、10、12月对应天数为31天,4、6、9、11月对应天数为30天,2月一般为28天,闰年为29天。(用switch结构编写)

测试说明

输入:


2000 2


输出:


该月份共 29 天

#include<stdio.h>
 
int main()
{
  int m,y;
  scanf("%d %d",&y,&m);
  if (y%4==0&&y%100!=0||y%400==0) 
{
  switch(m)
    {
    case 1:printf("该月份共 31 天");break;
    case 2:printf("该月份共 29 天");break;
    case 3:printf("该月份共 31 天");break;
    case 4:printf("该月份共 30 天");break;
    case 5:printf("该月份共 31 天");break;
    case 6:printf("该月份共 30 天");break;
    case 7:printf("该月份共 31 天");break;
    case 8:printf("该月份共 31 天");break;
    case 9:printf("该月份共 30 天");break;
    case 10:printf("该月份共 31 天");break;
    case 11:printf("该月份共 30 天");break;
    case 12:printf("该月份共 31 天");break;
    }
  }
else {
    switch(m)
    {
    case 1:printf("该月份共 31 天");break;
    case 2:printf("该月份共 28 天");break;
    case 3:printf("该月份共 31 天");break;
    case 4:printf("该月份共 30 天");break;
    case 5:printf("该月份共 31 天");break;
    case 6:printf("该月份共30天");break;
    case 7:printf("该月份共31天");break;
    case 8:printf("该月份共31天");break;
    case 9:printf("该月份共30天");break;
    case 10:printf("该月份共31天");break;
    case 11:printf("该月份共30天");break;
    case 12:printf("该月份共31天");break;
    }
  }
  

  return 0;  
}

8.

设银行定期存款的年利率 rate 为 2.25%,并已知存款期为 n 年,存款本金为 capital 元,试编程计算 n 年后的本利之和 deposit。要求定期存款的年利率 rate、存款期 n 和存款本金 capital 均由键盘输入。

deposit=capital∗(1+rate)n

平台会对你编写的代码进行测试:

测试输入:


0.0225 4 5000

预期输出:


4年本利之和:5465.42

#include <stdio.h>
#include <math.h>
int main()
{
    float rate,deposit,x;
    int n,capital;
    scanf("%f %d %d",&rate,&n,&capital);
    x=pow(1+rate,n);
    deposit=capital*x;
    printf("%d年本利之和:%.2f",n,deposit);
}

9.

设计算法编写程序,定义有10个元素的一维数组,数组元素的值由平台输入,输入变量x,将数组中所有与x值相等的元素删除,并输出删除后的数组。

测试说明

输入:


1 0 2 7 7 2 3 7 5 7

//数组


7

//变量x

输出:

1 0 2 2 3 5

#include <stdio.h>
int main()
{
   char s[100],temp[100],i,j;
   char c,c1;
   printf("请输入一个字串: ");
   gets(s);
   printf("请输入要删除的字符: ");
       c=getchar();
       i=j=0;
       while(c1=s[i++])
       {
               if (c1!=c)
                 temp[j++]=c1;
   }
   temp[j]='';
       printf("删除后的字串为: %s ",temp);
        return 0;

}

10.

任务描述

编写函数,输入

x,n

,计算

x + x^2 + x^3 + x^4 +… …x^n

,其中

x,n

分别是一个数字。

编程要求

请仔细阅读右侧代码,结合相关知识,在

Begin-End

区域内进行代码补充。


输入

分别输入两个整数

x n

,

(1<=x,n<=10)



输出


输出表达式的值,占一行。

提示:



int

可能会溢出,需要用能表示更大范围的

long long


int

(注:

VC6.0

不支持此类型,

VC

下使用可使用

__int64

替代)

测试说明

样例输入:


1 1


样例输出:


1

样例输入:


2 2


样例输出:


6

#include<stdio.h>
#include<math.h>
//编写函数
/*********Begin*********/
int main()
{
long long int x,n,sum,s,i;
sum=0,s=0;
scanf("%lld %lld",&x,&n);
for(i=1;i<=n;i++)
    {
    sum=pow(x,i);
    s=sum+s;
    }
printf("%lld",s);
}
/*********End**********/ 



版权声明:本文为minghaibuai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。