/*1.输入 2 个整数,求两数的平方和并输出。*/
#include<stdio.h>
int main(){
int a,b;
int num;
printf("please input two numbers:");
scanf("%d%d",&a,&b);
num=a*a+b*b;
printf("the result is %d\n",num);
return 0;
}
/*2. 输入一个圆半径(r)当 r>=0 时,计算并输出圆的面积和
周长,否则,输出提示信息。*/
#include<stdio.h>
#define pi 3.14 //宏名称必须是标识符
int main(){
float r,S,V;
printf("plesae input r=");
scanf("%f",&r);
if(r>=0)
printf("圆面积为%f,圆周长为%f",pi*r*r,2*pi*r);
else
printf("r输入不合法");
return 0;
}
/*3.函数 y=f(x)可表示为:
2x+1 (x<0)
y = 0 (x=0)
2x-1 (x>0)
编程实现输入一个 x 值,输出 y 值。*/
#include<stdio.h>
int main(){
int x,y;
printf("please input x=");
scanf("%d",&x);
if(x<0)y=2*x+1;
if(x==0)y=0;
if(x>0)y=2*x-1;
printf("y=%d",y);
return 0;
}
/*4.编写一个程序,从 4 个整数中找出最小的数,并显示此数。*/
#include<stdio.h>
int fun(int x,int y){
if(x<y) return x;
else return y;
}
int main(){
int a,b,c,d;
int x;
printf("please input four numbers:\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
x=fun(a,b);
x=fun(x,c);
x=fun(x,d);
printf("最小数为%d",x);
return 0;
}
/*5.有一函数当 x<0 时 y=1,当 x>0 时,y=3,当 x=0 时 y=5,编
程,从键盘输入一个 x 值,输出 y 值。*/
#include<stdio.h>
int main(){
int x,y;
printf ("please input x=");
scanf("%d",&x);
if(x<0)y=1;
else if(x>0)y=3;
else if(x==0)y=5;
printf("y=%d",y);
return 0;
}
/*6.从键盘输入两个数,求出其最大值(要求使用函数完成求最
大值,并在主函数中调用该函数)*/
#include<stdio.h>
int fun(int x,int y){
if(x>y)return x;
else return y;
}
int main(){
int a,b;
int max;
printf("please input two numbers:\n");
scanf("%d%d",&a,&b);//注意逗号
max=fun(a,b);
printf("max=%d",max);
return 0;
}
/*7.从键盘输入你和你朋友的年龄,编成判断谁的年龄最大,
并打印最大者的年龄。*/
#include<stdio.h>
int main(){
int youage,youfriendage;
printf("please input you age:");
scanf("%d",&youage) ;
printf("\nplease input your friend age:");
scanf("%d",&youfriendage);
if(youage>youfriendage)
printf("you age is older,you age is %d",youage);
else
printf("you friend age is older,you friend age is %d",youfriendage);
return 0;
}
/*8、键盘输入 2 个加数,再输入答案,如果正确,显示“right”,否则显示“error”*/
#include<stdio.h>
int main(){
int a,b,sum;
printf("please input two numbers:");
scanf("%d%d",&a,&b);
printf("please input sum:");
scanf("%d",&sum);
if(a+b==sum)printf("right");
else printf("error");
return 0;
}
/*9. 编一程序每个月根据每个月上网时间计算上网费用,计算方
法如下:费用=30元(<=10小时);每小时 3元 (10—50小时);每小时 2.5元 (>=50小时);
要求当输入每月上网小时数,显示该月总的上网费用*/
#include<stdio.h>
int main(){
float t,y;
printf("please input time:");
scanf("%f",&t);
if(t<=10)y=30;
else if(t<50&&t>10)y=3*t;
else y=2.5*t;
printf("the result is %f",y);
return 0;
}
/*10.神州行用户无月租费,话费每分钟 0.6 元,全球通用户月租
费 50 元,话费每分钟 0. 4 元。输入一个月的通话时间,分别
计算出两种方式的费用,判断哪一种合适。*/
#include<stdio.h>
int main(){
float t,fee1,fee2;
printf("please input time:");
scanf("%f",&t);
fee1=t*0.6;
fee2=t*0.4+50;
printf("神州行用户话费:%f\n",fee1);
printf("全球通用户话费:%f\n",fee2);
if(fee1<fee2)printf("神州行更合适");
else printf("全球通更合适");
return 0;
}
/*11.个人所得税计算,应纳税款的计算公式如下:
收入 税率
收入<=1000 元部分 0%
2000 元>=收入>1000 元的部 5%
3000 元>=收入>2000 元的部 10%
6000 元>=收入>3000 元的部 15%
收入>6000 元的部分 20%
输入某人的收入,计算出应纳税额及实际得到的报酬。(7
分)
(如需连续计算多个人的纳税情况,直到输入负数为止,程序
应如何改进?试写出程序)*/
#include<stdio.h>
int main(){
int val;
int tax,realval;
printf("please input val:");
scanf("%d",&val);
if(val<0){
printf("error");
return 0;
}
else if(val<=1000){
tax=0;
realval=val;
printf("应缴纳税额:%d 实际报酬:%d",tax,realval);
}
else if(val<=2000&&val>1000){
tax=(val-1000)*0.05;//C语言里5%写作0.05即可
realval=val-tax;
printf("应缴纳税额:%d 实际报酬:%d",tax,realval);
}
else if(val<=3000&&val>2000){
tax=(val-2000)*0.1+1000*0.05;
realval=val-tax;
printf("应缴纳税额:%d 实际报酬:%d",tax,realval);
}
else if(val<=6000&&val>3000){
tax=(val-3000)*0.15+1000*0.05+1000*0.1;
realval=val-tax;
printf("应缴纳税额:%d 实际报酬:%d",tax,realval);
}
else if(val>6000){
tax=(val-6000)*0.20+1000*0.05+1000*0.10+3000*0.15;
realval=val-tax;
printf("应缴纳税额:%d 实际报酬:%d",tax,realval);
}
return 0;
}
/*12.从键盘上输入一个百分制成绩 score,按下列原则输出其等
级 : score≥90 , 等 级 为 A ; 80≤score<90 , 等 级 为 B ;
70≤score<80,等级为 C;60≤score<70,等级为 D;score<60,
等级为 E。*/
#include<stdio.h>
int main(){
int score;
printf("please input score:");
scanf("%d",&score);
switch(score/10){
case 10:
case 9:printf("A");break;
case 8:printf("B");break;
case 7:printf("C");break;
case 6:printf("D");break;
default:printf("E");
}
return 0;
}
/*13. 编程设计一个简单的计算器程序。从键盘输入 2 个操作
数,1 个运算符,当运算符为加(+)、减(-)、乘(*)、除(/)时,输出计算结果*/
#include<stdio.h>
int main(){
int a,b;
char c;
scanf("%d%c%d",&a,&c,&b);
switch(c){
case '+':printf("%d+%d=%d",a,b,a+b);break;
case '-':printf("%d-%d=%d",a,b,a-b);break;
case '*':printf("%d*%d=%d",a,b,a*b);break;
case '/':if(b!=0){
printf("%d/%d=%d",a,b,a/b);
break;
}else{
printf("error1");
break;
}
default:printf("error2");
}
return 0;
}
/*14. 从键盘输入10个整数,统计其中正数、负数和零的个数,
并在屏幕上输出。*/
#include<stdio.h>
int main(){
int a[10];
int i;
int z=0,b=0,c=0;
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(i=0;i<10;i++){
if(a[i]>0)z++;
else if(a[i]<0)b++;
else if(a[i]==0)c++;
}
printf("正数个数:%d,负数个数:%d,0个数:%d",z,b,c);
return 0;
}
/*15、编程序实现求 1-200 之间的所有数的乘积并输出。*/
#include<stdio.h>
int main(){
int i;
double s=1; //int会溢出,double也只够100,凑不到200
for(i=2;i<100;i++){
s=s*i;
}
printf("the result is %f",s);
return 0;
}
/*16、编程序实现求 1-1000 之间的所有奇数的和并输出。*/
#include<stdio.h>
int main(){
int i;
int sum;
for(i=1;i<1000;i+=2){
//if(i%2==1)sum+=i;
sum+=i;
}
printf("%d",sum);
return 0;
}
/*17. 从键盘上输入 10 个数,求其平均值。*/
#include<stdio.h>
int main(){
int i,x;
float avi,sum=0; //avi会有小数
for(i=0;i<10;i++){
scanf("%d",&x);
sum+=x;
}
avi=sum/10;
printf("平均值:%f",avi);
return 0;
}
/*18.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13……
编程求这个序列的前 20 项之和。*/
#include<stdio.h>
int main(){
int i,t=0;
float a=2,b=1;
float sum=0;
for(i=0;i<20;i++){//int t保证了分子分母都是整形
sum+=a/b;
t=a+b;
b=a;
a=t;
}
printf("%f",sum);
return 0;
}
/*19. 用数组实现以下功能:输入 5 个学生成绩,而后求出这些
成绩的平均值并显示出来。*/
#include<stdio.h>
int main(){
float a[5];
int i;
float sum=0,avi;
for(i=0;i<5;i++){
scanf("%f",&a[i]);
sum+=a[i];
}
avi=sum/5;
printf("%f",a[i]);
return 0;
}
/*20、用循环的方法构造一个 5 行 5 列的二维数组,使主对角线
上的变量为 1,其它为 0,并将数组中所有项按行按列显示出来。*/
#include<stdio.h>
int main(){
int i,j;
int a[5][5];
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i==j)a[i][j]=1;
else a[i][j]=0;
}
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
/*21.求一个 3×3 矩阵对角线元素之和。从键盘输入矩阵元素的
值并输出和的值.*/
#include<stdio.h>
int main(){
int a[3][3];
int i,j;
int sum=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(i==j)sum+=a[i][j];
}
}
printf("%d",sum);
return 0;
}
/*22.输入 n 的值,n 代表行数,输出如图所示的图形。
*
* * *
* * * * *
* * * * * * * (此图为 n=4 时的输出结果)*/
#include<stdio.h>
int main(){
int n;
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<(2*i+1);j++){
printf("*");
}
printf("\n");
}
return 0;
}
/*23、从键盘输入 30 名学生的成绩数据,求其中的最高分、最低
分和平均分。*/
#include<stdio.h>
int main(){
int a[30];
int i,max,min,sum,avi=0;//必须先赋值
for(i=0;i<30;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
max=a[0];
for(i=0;i<30;i++){
if(a[i]>max)max=a[i];
}
min=a[0];
for(i=0;i<30;i++){
if(a[i]<min)min=a[i];
}
avi=sum/30;
printf("max=%d,min=%d,avi=%d",max,min,avi);
return 0;
}
/*24. 从键盘输入某班学生某门课的成绩及其学号(班级人数最多 40 人,具体人数由键盘输入),
输出该班最高分和最低分及其学生学号;并输出该班该课程的总分和平均分。请编写程序。*/
#include<stdio.h>
int main()
{
int n,i;
int a[100][2];
int max,max_num,min,min_num,sum,avi;
printf("输入人数:");
scanf("%d",&n);
sum=0;
for(i=0;i<n;i++){
printf("输入学号:") ;
scanf("%d",&a[i][0]);
printf("输入成绩:") ;
scanf("%d",&a[i][1]);
sum+=a[i][1];
}
max=a[0][1];
max_num=a[0][0];
for(i=0;i<n;i++){
if(max<a[i][1]){
max=a[i][1];
max_num=a[i][0];
}
}
min=a[0][1];
min_num=a[0][0];
for(i=0;i<n;i++){
if(min>a[i][1]){
min=a[i][1];
min_num=a[i][0];
}
}
avi=sum/n;
printf("最高分:%d,最高分学号:%d\n",max,max_num);
printf("最低分:%d,最低分学号:%d\n",min,min_num);
printf("总分:%d,平均分:%d",sum,avi);
return 0;
}
/*25.将一个有 5 个元素的数组中的值(整数)按逆序重新存放。
例: 原来顺序为:8、6、5、4、1,要求改为1、4、5、6、8*/
#include<stdio.h>
int main(){
int a[5]={8,6,5,4,1};
int t,i;
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<5/2;i++){
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
return 0;
}
/*26.从键盘上输入一个 2*3 的矩阵,将其转置后形成3*2的矩阵输出。*/
#include<stdio.h>{
int main(){
int a[2][3],b[3][2];
int i,j;
int t;
for(i=0;i<2;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
printf("原输出:\n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<2;j++){
//t=a[j][i];
b[i][j]=a[j][i];
//a[j][i]=t;
}
}
printf("变后输出:\n");
for(i=0;i<3;i++){
for(j=0;j<2;j++){
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
/*27.编写两个函数分别求两个整数的最小公倍数和最大公约数,用主函数调用这两个函数并输出结果。两个整数由键盘输入。*/
/*求最大公约数:更相减损法
分析:a, b两个数字(a > b)
先将两个数字做差: a - b = c;
然后再将b和c之间做差,
直到b和c相等;
*/
/*求最大公倍数:利用最大公约数的计算结果
最大公倍数等于两个数的乘积除以最大公约数
*/
#include<stdio.h>
int fun1(int a,int b){
while(a!=b){
if(a<b){
b=b-a;
}
else if(a>b){
a=a-b;
}
}
return a;
}
int fun2(int a,int b){
int c=fun1(a,b);
c=a*b/c;
return c;
}
int main(){
int a,b,c1,c2;
scanf("%d%d",&a,&b);
c1=fun1(a,b);
c2=fun2(a,b);
printf("最大公约数:%d,最小公倍数:%d",c1,c2);
return 0;
}
/*28. 输入一个 3*3 矩阵,求出其转置矩阵,并求出两个矩阵的和.*/
#include<stdio.h>
int main(){
int a[3][3],b[3][3],c[3][3];
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
b[i][j]=a[j][i];
printf("%2d",b[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
c[i][j]=a[i][j]+b[i][j];
printf("%2d",c[i][j]);
}
printf("\n");
}
}
/*29、从键盘输入 10 名学生的成绩数据,按成绩从高到低
的顺序排列并输出。(提示:用数组存放成绩数据)*/
/*冒泡排序:
for (int i = 0; i < n - 1; ++i) {
// 每次外层循环都会确定当前未排序部分中的最大/最小值所在位置
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
// 如果发现后面的元素更大/更小,则进行交换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
*/
#include<stdio.h>
int main(){
int a[10];
int i,j;
int t;
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(i=0;i<10-1;i++){//冒泡排序
for(j=0;j<10-i-1;j++){
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
/*30. 定义一个 5 行 3 列的数组,从键盘输
入各数组元素的值,计算各数组元素之和。*/
#include<stdio.h>
int main(){
int a[5][3];
int i,j;
int sum=0;
for(i=0;i<5;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
sum+=a[i][j];
}
}
printf("%d",sum);
return 0;
}
/*31、编写程序,交换两个数组中的对应元素。*/
#include<stdio.h>
#define N 10
int main(){
int a[N],b[N];
int i,j;
int t=0;
printf("a数组:");
for(i=0;i<N;i++){
scanf("%d",&a[i]);
}
printf("b数组:");
for(i=0;i<N;i++){
scanf("%d",&b[i]);
}
for(i=0;i<N;i++){
t=a[i];
a[i]=b[i];
b[i]=t;
}
printf("a数组:");
for(i=0;i<N;i++){
printf("%d",a[i]);
}
printf("\n");
printf("b数组:");
for(i=0;i<N;i++){
printf("%d",b[i]);
}
return 0;
}
/*32、从键盘上输入一个 4*3 的整型数组,
找出数组中的最小值及其在数组中的下标。*/
#include<stdio.h>
int main(){
int a[4][3];
int min,min_num_i,min_num_j;
int i,j;
printf("输入数组元素:\n");
for(i=0;i<4;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
min=a[0][0];
min_num_i=0;
min_num_j=0;
for(i=0;i<4;i++){
for(j=0;j<3;j++){
if(min>a[i][j]){
min=a[i][j];
min_num_i=i;
min_num_j=j;
}
}
}
printf("最小值:%d,在数组中下标为(%d,%d)",min,min_num_i,min_num_j);
return 0;
}
/*33.编程实现如下功能:从键盘输入一行字符,
统计其中大写英文字符,小写英文字符和其他字符的个数。*/
#include<stdio.h>
#include<string.h>
int main(){
char str[10];
gets(str);
int i;
int num_b=0,num_s=0,num_o=0;
for(i=0;i<strlen(str);i++){
if(str[i]<='Z'&&str[i]>='A')num_b++;
else if(str[i]<='z'&&str[i]>='a')num_s++;
else num_o++;
}
printf("大写英文字符个数:%d\n小写英文字符个数:%d\n其他字符个数:%d",num_b,num_s,num_o);
return 0;
}
/*34.编程实现如下功能:
1)在主函数中,实现从键盘输入10 名学生某门课的成绩,
保存在一维数组中;调用排序函数;对排序后的数组中的元素
按从高到低打印输出。
2)编写排序函数,使用数组名做函数参数,实现对该成绩的排序。*/
#include<stdio.h>
void fun(float a[],int n){//冒泡排序
int i,j;
float t;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(a[j]<a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main(){
float a[10];
for(int i=0;i<10;i++){
scanf("%f",&a[i]);
}
fun(a,10);
for(int i=0;i<10;i++){
printf("%f ",a[i]);
}
return 0;
}
/*35.编程实现如下功能:实现从键盘输入两个字符串,
分别存入两个不同的字符数组中;将两个字符串连接为
一个字符串,并打印输出连接后的整个字符。*/
#include<stdio.h>
#include<string.h>
int main(){
char str1[100];
char str2[10];
int i,j;
gets(str1);
gets(str2);
for(i=strlen(str1),j=0;j<strlen(str2);i++,j++){
str1[i]=str2[j];
}
str1[i]='\0';
puts(str1);
return 0;
}
/*36、猜数游戏。系统随机产生一个整数,
通过键盘输入数据猜数,猜对为止,并要
求统计猜的次数。注:rand()函数可以产
生0~32767 间的正整数,程序中需包含 stdlib.h。*/
/*利用rand()产生随机数字:
#include<time.h>
srand(seed)->srand((int)time(0));//seed为整数,当seed固定,rand()产生的随机数固定
a=rand();
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int a,b;
int count;
srand((int)time(0));
a=rand();
do{
printf("请猜(0~32767):");
scanf("%d",&b);
count++;
if(b>a){
printf("猜高了!\n");
}
else if(b<a){
printf("猜低了!\n");
}
}while(b!=a);
printf("猜对了!!!,猜了%d次",count);
return 0;
}
/*37.输入两个整数,利用指针变量作为函数参数,
编程实现两数互换功能,并将交换后的数据重新输出。*/
#include<stdio.h>
void fun(int *a,int *b){
int t;
t=*a;
*a=*b;
*b=t;
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
fun(&a,&b);
printf("a=%d,b=%d",a,b);
return 0;
}
/*38.随机输入若干个学生的体重,以输入负数或零结束,
分别求最重和最轻的体重,并计算平均体重。*/
#include<stdio.h>
int main(){
float w;
float max,min,avi=0;
int count=0;
printf("please input weight:");
scanf("%f",&w);
avi+=w;
max=w;
min=w;
count++;
//printf("\n");
while(w>0){
printf("please input weight:");
scanf("%f",&w);
count++;
avi+=w;
if(max<w){
max=w;
}
if(min>w){
min=w;
}
// printf("\n");
}
avi=avi/count;
printf("最大:%f\n最小:%f\n平均:%f",max,min,avi);
return 0;
}
/*39.输入 m,k 的值,编程求下面表达式
的值:(要求编写一个求阶乘的函数,
调用函数实现本题)p=k!/(m-k)!*/
#include<stdio.h>
int fun(int a){
/*while(a!=1){
a*=(a-1);
}*/
int result=1;
for(int i=2;i<=a;i++){
result*=i;
}
printf("%d的阶乘=%d\n",a,result);
return result;
}
int main(){
int m,k;
scanf("%d%d",&m,&k);
double p;
p=fun(k)/fun(m-k);
printf("p=%f",p);
}
/*40. 编写程序,其中自定义一函数,用来判断一个
整数是否为素数,主函数输入一个数,输出是否为素数。*/
#include<stdio.h>
bool fun(int x){
int i;
for(i=2;i<x/2;i++){
if(x%i==0)return false;
}
return true;
}
int main(){
int a;
bool t;
scanf("%d",&a);
t=fun(a);
if(t){
printf("%d是素数",a);
}
else{
printf("%d不是素数",a);
}
return 0;
}