C语言试题系列-第二、三、四、五章(运算符、顺序结构、选择结构、分支结构)

本文提供了多个C语言基础编程题目,包括整数算术运算、图形面积计算、字符编码、数组排序、循环结构等,旨在帮助初学者通过实例学习和理解C语言的基本操作和逻辑控制。每个题目都附带了代码示例,部分代码经过优化,适合学习和交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

前言

一、整数算术运算

二、计算心理阴影面积

三、字符译码

四、实验3 - 最简单的C程序设计——顺序程序设计 (实验报告见资源下载)

五、4个数按从大到小输出

六、实验4 - 选择结构程序设计(实验报告见资源下载)

七、统计不同字符个数

八、实验5 - 循环结构程序设计 (实验报告见资源下载)

九、三天打鱼两天晒网

十、最佳情侣身高差

十一、求e

十二、输出整数各位数字

十三、九宫格键盘模拟输入

总结


前言

1.本专栏基于谭浩强先生写的《C程序设计(第五版)》与《C程序设计(第五版)学习辅导》配套的相关试题和实验,给出常见C语言基础试题相应代码,方便大家参考学习

2.本专栏所有代码均在本地及Online Judge(OJ)平台测试通过,注意各大OJ平台的测试标准不同,可能存在出入,若很遗憾无法提交,则仅作为程序实现思想交流

3.本专栏仅收录个人C实验,仅仅实现程序功能,不涉及高性能算法,当然也欢迎算法师傅交流优化

4.部分代码参考网上代码后经个人修改优化,望周知

5.部分代码存在与题目描述不符的情况,望周知

6.创作不易,整理不易,若对您有帮助请评论/点赞/收藏/转发,尊重每个技术人!

一、整数算术运算

【问题描述】

本题要求编写程序,计算并输出2个正整数的和、差、积、商与余数。题目保证输入和输出全部在整型范围内,且分母不为0。

【输入形式】

输入在一行中给出2个正整数A和B。

【输出形式】

在5行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商与余数。

【样例输入】

5 3
【样例输出】

5+3=8

5-3=2

5*3=15

5/3=1

5%3=2

#include<stdio.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a,b ;
	scanf("%d %d",&a,&b);
	printf("a + b = %d\n",a+b);
	printf("a - b = %d\n",a-b);
	printf("a * b = %d\n",a*b);
	printf("a / b = %d\n",a/b);
	printf("a %% b = %d\n",a%b);
	system("pause") ;
	return 0 ;
}

二、计算心理阴影面积

【问题描述】

 这是一幅心理阴影面积图。我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线)。由红、蓝线围出的面积,就是我们在做作业时的心理阴影面积。现给出红色拐点的坐标(x,y),要求你算出这个心理阴影面积。

【输入形式】

输入在一行中给出 2 个不超过 100 的正整数x和y ,并且保证有x>y。这里假设横、纵坐标的最大值(即截止日和最终完成度)都是 100。

【输出形式】

  在一行中输出心理阴影面积。

  友情提醒:三角形的面积 = 底边长 x 高 / 2;矩形面积 = 底边长 x 高。嫑想得太复杂,这是一道 5 分考减法的题……

【样例输入】

90 10
【样例输出】

4000

#include<stdio.h>
#include<stdlib.h>
#include <math.h>
int main()
{
	
	int b=100,x,y ;
	double a ,c=2.0 ,h ,s;
	scanf("%d %d",&x,&y);
	a=b*sqrt(c);
	h=(x-y)/sqrt(c);
	s = (a*h)/2 ;
	printf("%.f",s);
	system("pause") ;
	return 0 ;
}

三、字符译码

【问题描述】

输入为5个大写字母,将其译成密码,其译码规律为将单个字母用它前面第4个字母代替,如'E'用'A'代替,'Z'用'V'代替,但前四个大写字母'A'、'B'、'C'、'D'分别使用'W'、'X'、'Y'、'Z'代替。
【输入形式】

五个大写字母
【输出形式】

译码后结果
【样例输入】

MOVIE
【样例输出】

IKREA

【样例说明】

提示:当输入为前四个字母时,仔细寻找变换规律,可采用选择结构(if  else)和表达式语句实现判断是否为前4个字母

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i ;
	char arr[5]; 
	scanf("%c%c%c%c%c",&arr[0],&arr[1],&arr[2],&arr[3],&arr[4]);
		for(i=0;i<5;i++)
		{
			if (arr[i] >= 65 && arr[i] <= 68) {
				printf("%c",arr[i]+26-4);
			} else {
				printf("%c",arr[i]-4) ;
			}
		}
	system("pause");
	return 0 ;

}

四、实验3 - 最简单的C程序设计——顺序程序设计 (实验报告见资源下载)

实验3-最简单的C程序设计-顺序设计-C文档类资源-优快云文库https://download.youkuaiyun.com/download/m0_66842854/87512389

五、4个数按从大到小输出

【问题描述】

输入4个整数,要求按从大到小顺序输出
【输入形式】

4个整数
【输出形式】

按从大到小顺序输出

【样例输入】

1 5 2 7
【样例输出】

Order from largest to smallest=7 5 2 1

【样例说明】

输入输出数据均采用空格符进行分隔

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
	int arr[4],i,j ,temp;
	//printf("请输入4个数:") ;
	scanf("%d%d%d%d",&arr[0],&arr[1],&arr[2],&arr[3]) ;
	for(i=0;i<3;i++){
		for(j=0;j<3-i;j++){
			if (arr[j] < arr[j+1]) {
					temp=arr[j+1] ;
					arr[j+1]=arr[j] ;
					arr[j]=temp ;
			}
		}
	}
	
	printf("Order from largest to smallest=%d %d %d %d",arr[0],arr[1],arr[2],arr[3]) ;
	
	system("pause");
	return 0 ;

}

六、实验4 - 选择结构程序设计(实验报告见资源下载)

实验4-选择结构程序设计-C文档类资源-优快云文库https://download.youkuaiyun.com/download/m0_66842854/87512399

七、统计不同字符个数

【问题描述】统计不同字符个数:输入一行字符,统计其中的大写字母、小写字母、空格、数字以及其他字符的个数。

【输入形式】
【输出形式】
【样例输入】ewrAA 112*&^%
【样例输出】upper: 2 lower: 3 blank: 1 digit: 3 other: 4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{	char array[80] ;
	int j,count_uppercase=0,count_lowercase=0,count_num=0,count_space=0,count_other=0 ;
 		gets(array);
		for(j=0;j<80&&array[j]!='\0';j++){
			if(array[j]==' '){
				count_space++ ;
			}else if ('a'<=array[j]&&array[j]<='z'){
				count_lowercase++ ;
			}else if ('A'<=array[j]&&array[j]<='Z'){
				count_uppercase++ ;
			}else if ('0'<=array[j]&&array[j]<='9'){
				count_num++ ;
			}else {
				count_other++ ;
			}
		}
	printf("upper:%d lower:%d blank:%d digit:%d other:%d",
		   count_uppercase,count_lowercase,count_space,count_num,count_other) ;
	system("pause");
	return 0 ;
}

八、实验5 - 循环结构程序设计 (实验报告见资源下载)

实验5-循环结构程序设计-C文档类资源-优快云文库https://download.youkuaiyun.com/download/m0_66842854/87512408

九、三天打鱼两天晒网

【问题描述】

中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”?

【输入形式】

输入在一行中给出一个不超过1000的正整数N。

【输出形式】

在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”

【样例输入1】

103

【样例输出1】

Fishing on day 103

【样例输入2】

34

【样例输出2】

Drying on day 34

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int num ,temp;
	scanf("%d",&num) ;
	temp = num % 5 ;
	if(temp <= 3 && temp != 0 ) {
		printf("Fishing on day %d",num) ;
	} else {
		printf("Drying on day %d",num) ;
	}
	system("pause");
	return 0 ;

}

十、最佳情侣身高差

【问题描述】

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

【输入形式】

输入第一行给出正整数N≤10,为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

【输出形式】

对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

【样例输入】

2

M 1.75

F 1.8

【样例输出】

1.61

1.96

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i,n;
	double h;
	char sex;
	scanf("%d",&n);
	getchar();
	for(i=0;i<n;i++)
	{
		scanf("%c %lf",&sex,&h);
		getchar();
		if(sex=='M'){
			printf("%.2lf\n",h/1.09);
		}else if(sex=='F'){
			printf("%.2lf\n",h*1.09);
		}
	}
	system("pause");
	return 0 ;
}

 

十一、求e

【问题描述】

输入一个正整数n,计算下式的和:e = 1+1/1! + 1/2! + 1/3! +...+1/n!   (保留4 位小数)

【输入形式】
【输出形式】
【样例输入】

5
【样例输出】

2.7167

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
      int i ,n,deno = 1;
      float e = 1 ;
      scanf("%d",&n);
      for(i =1 ;i <= n;i++)
      {
            deno *= i;
            e += 1.0 / deno ;
      }
      printf("%.4f\n",e);
	system("pause");
    return 0;
}

 十二、输出整数各位数字

【问题描述】

输出整数各位数字:输入一个整数number(≥0),从高位开始逐位分割并输出它的各位数字。试编写相应程序。

【输入形式】
【输出形式】
【样例输入】

1012
【样例输出】

1 0 1 2

#include<stdio.h>
int main()
{
	int num=0,t=0,mask=1;
	scanf("%d",&num);
	t=num;
	while(t>9){
		t/=10;
		mask*=10;
	}
	while(mask>0){
	 	printf("%d ",num/mask);     
		num%=mask;
		mask/=10;
	} 
    return 0;
}

十三、九宫格键盘模拟输入

【问题描述】

假设有九宫格输入法键盘布局如下:

 [ 1,.?!  ]      [ 2ABC]      [ 3DEF]

 [ 4GHI]      [ 5JKL ]      [ 6MNO]

 [ 7PQRS]   [ 8TUV]      [ 9WXYZ]

                    [ 0空 ]

注意:中括号[ ]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。多次按同一个键,则输入的字符依次循环轮流,例如按两次3,则输入D;按5次7,则输入S;按2次2,则输入A。按键0的输入组合是0和空格字符,即按两次0输入空格。整个输入以回车符结束输入。

你需要对于给定的按键组合,给出该组合对应的文本。

【输入形式】

输入在一行中给出数个字符的按键组合(例如 999 表示按3次9),每个字符的按键组合之间用空格间隔,最后一个输入法组合之后以换行结束。输入数据至少包括一个字符的按键组合,且输入总长度不超过500个字符。

【输出形式】

在一行中输出该按键组合对应的文本。

【样例输入】

4444 00 5555 6666 8888 333 00 2222 6666 33 4444 666 44
【样例输出】

I LOVE CODING
【Tips】:

可通过输入的空格符(不是00)判断单个字符输入完成,并根据输入同一数字的次数,进行判断输出哪个字符(如果用了很多很多个if,记得还有个switch可以试试   (* ̄︶ ̄)  )。

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,len1,len2,t,k=0;
    char a[10][6]={"0 ","1,.?!","2ABC","3DEF","4GHI","5JKL","6MNO","7PQRS","8TUV","9WXYZ"};
    char b[500];
	gets(b);
    len2=strlen(b);
    for(i=0;i<len2;i++)
    {
    	t=b[i]-'0';
    	len1=strlen(a[t]);
    	while(b[i]!=' '&&b[i]!='\0')
    	{
    		i++;
    		k++;
    	}
    	j= k%len1==0?len1-1:k%len1-1;
    	printf("%c",a[t][j]);
    	k=0;
    }
    printf("\n");
    return 0;
}

总结

本专栏旨在帮助C语言初学者学习编程,仅供学习交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

及辞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值