C语言练习题(一)

时间:2023-02-22 23:26:07

练习1:

/*
1、 给你任意三个整形数据,找出其中最大一个整形数。
思路:1)分别有三个变量用于保存数据,再加一个变量保存最大值
2)先让a和b进行比较,最大值辅给Max;
3) 再让c与上面的Max进行比较,最大值赋给Max;
工具:用if进行逻辑判断
*/
#include<stdio.h>//引入头文件
int main(void){
int a,b,c,Max;//变量必须先定义后才能使用
scanf_s("%d,%d,%d",&a,&b,&c);//scanf从键盘输入数据;出错原因“,”输成中文状态的了
//先将a,b比较
if (a>b){
Max=a;
}else{
Max=b;
}
//再将c与Max比较
if(Max<c){
Max=c;
}
printf("三个数中的最大值为:%d\n",Max);
//printf("32位计算机long字节为:size0f(long)=%d\n",sizeof(long));//32位计算机long字节为4字节
return 0;

}
VS2010编译结果:

C语言练习题(一)

练习2:

/*
2、求1+2!+3!+...+20!的和。
//注意:1)一个工程只能包含一个main()函数
2)数据溢出问题,对数据类型的范围有一个清醒的认识
3)for循环

*/
#include<stdio.h>
//主函数不能少
int main(void){
long long int sum=0;
int i,eachfactorial=2;
for(i=1;i<=20;i++){
eachfactorial=eachfactorial*i;//每一数的阶乘
sum+=eachfactorial;
}
printf("1!+2!+3!+...20!=%d\n",sum);
return 0;
/*
#include<stdio.h>
//主函数不能少
int main(void){
long long int sum=0;
int i,eachfactorial=1,MAX;
scanf_s("键盘输入:%d",&MAX);//用键盘输入出问题了(循环未进行计算)
for(i=1;i<=MAX;i++){
eachfactorial=eachfactorial*i;//每一数的阶乘
sum+=eachfactorial;
}
printf("1!+2!+3!+...20!=%d\n",sum);
return 0;
}
*/
}
编译结果:

C语言练习题(一)

练习3:

/*
3、编程完成数据加密:数据是五位的整数,加密规则为:
每位数字都加上6,然后用和除以8的余数代替该数字,
再将第一位和第五位交换,第二位和第四位交换。
//面向过程:思路和步骤
思路:1)用一个数组保存5位整数,需要了解数组的定义,键盘输入---for循环实现
2)换序排列:for循环实现
举例: 1 2 3 4 5
+6 ----7 8 9 1011
%8 ----7 0 1 2 3
逆排列- 3 2 1 0 7
*/
#include<stdio.h>
void main(void){
int array[5];
int i;
printf("加密前的数字:");
for( i=0;i<5;i++){
scanf_s("%d",&array[i]);//键盘输入一个数组元素(为什么在for里面定义int i报错【此时不在外层定义int i】
//键盘输入的数字必须加空格原因:因为数组有多个数,不用空格分割开,系统就不认识是一个数还是多个数了
}
for( i=0;i<5;i++){
array[i]=(array[i]+6)%8;//每位数字都加上6,然后用和除以8的余数代替该数字
}
/*调换a-b,回顾java的五种方式
逆序排列,先将a值给中间变量temp;
再将b值给a,最后将temp给b值
*/
for( i=0;i<5%2;i++){
int temp;
temp=array[5-1-i];
array[5-1-i]=array[i];
array[i]=temp;//再将第一位和第五位交换,第二位和第四位交换
}
printf("加密后的数字:");
for( i=0;i<5;i++){
printf("%d",array[i]);//输出加密后的5位数字
}
printf("\n");
}
编译结果:

C语言练习题(一)

  未完待续...