C语言课上练习作业

scanf函数:为函数进行赋值
用法:scanf(“输入控制符”, 输入参数),“输入控制符”和“输入参数”无论在“顺序上”还是在“个数上”一定要一一对应。

数据类型控制符
int型%d
float型%f
double型%lf
# include <stdio.h>
int main(void)
{
    int i;
    scanf("%d", &i);  //&i 表示变量 i 的地址,&是取地址符
    printf("i = %d\n", i);
    return 0;
}

1.n的阶乘

#include<stdio.h>
int main(void)
{
 int n;
 int factorial(int n);
 scanf("%d",&n);
 printf("%d\n",factorial(n));
 return 0;
}
int factorial(int n)
{
 int i,fact = 1;
 for(i=1;i<=n;i++)
   fact = fact*i;
 return fact;
}

2.1-100以内所有偶数的和

#include <stdio.h>
int main()
{
    int sum = 0;
    int i = 0;
    for(i = 0;i <= 100;i+=2){
    sum+=i;
    }
    printf("1-100之间的偶数和为: %d\n", sum);
    return 0;
}

3.输入三个数,计算并输出他们的平均值以及三个数的乘积

# include "stdio.h"
main(){
	int n1,n2,n3;
	float sum;
	float average;
	int product;
	scanf("%d %d %d", &n1,&n2,&n3);
	sum = n1 + n2 + n3;
	average = sum / 3.0;
	product = n1 * n2 * n3;
	printf("average = %f\n product = %d\n", average , product);
	return 0;
}

4.输入圆的半径r,求圆的面积和周长pi(pi为3.1415926)

# include "stdio.h"
main(){
	int r;
	float pi;
	float mianji;
	float zhouchang;
	scanf("%d", &r);
	pi = 3.1415926;
	mianji = pi * r * r;
	zhouchang = 2 * r *pi;
	printf("mianji= %f\nzhouchang = %f\n", mianji , zhouchang);
	return 0;
}

5.判断两个数a,b,输出较大数的平方值

#include "stdio.h"
main(){
	int a,b;
	scanf("%d %d",&a,&b);
	if (a>=b){
		printf("较大数的平方值为:%d",a*a);
	}
	else{
		printf("较大数的平方值为:%d",b*b);
	}
	return 0;
} 

6.从键盘读入一个数,判断他们的正负,是正数则输出“+”,是负数则输出“-”

#include <stdio.h>
main(){
	int n;
	scanf("%d",&n);
	if (n>=0){
		printf("+");
	}
	else{
		printf("-");
	}
	return 0;
}

7.假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按1.5元计算邮费,如果超过1公斤,其超过部分每公斤加收0.8元。请编程序计算邮费。

#include <stdio.h>
main(){
	float n;
	scanf("%f",&n);
	if(n<=1){
		printf("%f","1.5");
	} 
	else{
	printf("%f",1.5+(n-1)*0.8);
	}
	return 0;
}

8.求s=1+1/2+1/3+…+1/100的和

#include <stdio.h>
main(){
	double sum;
	double i;
	sum=0;
	for(i=1;i<=100;i++){
		sum=sum+1.0/i;
	}
	printf("sum=%lf",sum);
	return 0;
} 

9.求100以内所有奇数和

#include <stdio.h>
main(){
	int i;
	int sum;
	sum=0;
	for(i=1;i<=100;i++){
		if(i%2==0){
			i=i;
		}
		else{
			sum=sum+i;
		}
	}
	printf("100以内所有奇数和为%d",sum);
	return 0;
}

10.求10个数里面的最大值和最小值

#include <stdio.h>
main(){
	int a[10];
	int min;
	int max;
	int i;
	int j;
	for(i=0;i<10;i++)
	scanf("%d",&a[i]);
	
	max=a[0];
	min=a[0];
	for(i=1;i<10;i++){
		if(max<a[i]){
			max=a[i];
		}
	}
	for(j=1;j<10;j++){
		if(min>a[j]){
			min=a[j];
		}
	}
	printf("max为%d",max);
	printf("min为%d",min);
	return 0;
}

11.输入圆的半径r,求圆的面积和周长pi(pi为3.1415926) 使用自定义函数调用

#include <stdio.h>
double mianji(int n){
	double area;
	float pi;
	pi = 3.1415926;
	area = n*n*pi;
	return area;
}
double zhouchang(int n){
	double perimeter;
	float pi;
	pi = 3.1415926;
	perimeter = 2*n*pi;
	return perimeter;
}
main(){
	int n;
	double s;
	double c;
	scanf("%d",&n);
	s = mianji (n);
	c = zhouchang(n);
	printf("面积为%lf%",s);
	printf("周长为%lf%",c); 
	return 0;
}

12.输入摄氏度c,写程序将他转换成华氏度
f=9c/5+32

#include <stdio.h>
double transform(int n){
	double result;
	result = 9.0*n/5.0+32;
	return result;
}
main(){
	int n;
	double f;
	scanf("%d",&n);
	f=transform(n);
	printf("该华氏度为:%lf",f);
	return 0;
}

13.某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100套的,每套定价为50元,否则每套价格为80元。输入订购套数,输出应付款的金额数。

#include <stdio.h>
main(){
	int n;
	int sum;
	scanf("%d",&n);
	if(n>100){
		sum=50*n;
	}
	else{
		sum=80*n;
	}
	printf("总金额为:%d",sum);
} 

14.某市的士费起步价8元,可以行驶3公里。3公里以后,按每公里1.6元计算,输入的士的公里数,请你计算顾客需付费多少元?

#include <stdio.h>
main(){
	double n;
	double sum;
	scanf("%lf",&n);
	if(n>3){
		sum=8+1.60*(n-3);
	}
	else{
		sum=8;
	}
	printf("需付费:%lf",sum);
} 
} 

15.输入三个正整数,若能用这三个数作为边长组成三角形,就计算并输出该三角形的面积,否则输出Can‘t

#include <stdio.h>
#include <math.h>
main(){
	int a,b,c;
	double area;
	double p;
	scanf("%d%d%d",&a,&b,&c);
	if(a+b>c && a+c>b && b+c>a){
		p=(a+b+c)/2;
		area=sqrt(p*(p-a)*(p-b)*(p-c));
		printf("面积为:%lf",area);
	}
	else{
		printf("Can’t");
	}
} 

16.输入一个形式如“操作数 运算符 操作数”的四则运算表达式,输出运算结果。
(要求用switch语句实现)

#include <stdio.h>
main(){
	double a,b;
	char c;
	double result;
	printf("输入一个形式如“操作数 运算符 操作数”的四则运算表达式\n");
	scanf("%lf%c%lf",&a,&c,&b);
	switch(c){
		case '+':{
			result=a+b;
			printf("计算结果为:%lf",result);
			break;
		}
		case '-':{
			result=a-b;
			printf("计算结果为:%lf",result);
			break;
		}
			
		case '*':{
			result=a*b;
			printf("计算结果为:%lf",result);
			break;
		}
		case '/':{
			result=a/b;
			printf("计算结果为:%lf",result);
			break;
		}
		default:printf("\n 运算符输入错误\n");
	}
	getchar();
} 

17.输入10个字符,分别统计出其中空格或回车、数字字符和其他字符的个数。
(要求用switch语句实现)

#include <stdio.h>
main(){
	int blank,enter,digit,other,i;
	char op;
	blank=enter=digit=other=0; 
	printf("请输入十个字符\n");
	scanf("%c",&op);
	for(i=1;i<=10;i++){
		op=getchar();
		switch(op){
			case ' ':
				blank=blank+1;
				break;
			
			case '\n':
				enter=enter+1;
				break;
			
			case '0':case '1':case '2':case '3':case '4':
			case '5':case '6':case '7':case '8':case '9':
				digit=digit+1;
				break;
			
			default:other=other+1;
		} 
	}
	printf("blank=%d,enter=%d,digit=%d,other=%d",blank,enter,digit,other);
	return 0;
}

18.求解简单加、减、乘、除表达式。要求对除数为0的情况作特别处理。

#include<stdio.h>
 
int main() {
    double value1, value2;
    char op;
    scanf("%lf%c%lf", &value1, &op, &value2);
    switch (op) {
        case '+':
            printf("%.2lf\n", value1 + value2);
            break;
        case '-':
            printf("%.2lf\n", value1 - value2);
            break;
        case '*':
            printf("%.2lf\n", value1 * value2);
            break;
        case '/':
            if (value2 != 0) {
                printf("%.2lf\n", value1 / value2);
                break;
            } else
                printf("Divisor can not be 0!");
            break;
        default:
            printf("Unknown operator!");
            break;
    }
    return 0;
}

19.用while循环 s=1+2+3+…+10

#include <stdio.h>
main(){
	int sum;
	int a;
	sum=0;
	a=1;
	while (a<=10){
		sum=sum+a;
		a++;
	}
	printf("sum=%d",sum);
} 

20.用while循环 s=1+1/2+1/3+…+1/100

#include <stdio.h>
main(){
	double sum;
	int a;
	sum=0;
	a=1;
	while (a<=100){
		sum=sum+1.0/a;
		a++;
	}
	printf("sum=%lf",sum);
} 

21.输入任意自然数a,b 求a,b的最小公倍数

#include <stdio.h>
main(){
	int a,b;
	int i=1;
	scanf("%d%d",&a,&b);
	while ((a*i)%b!=0){
		i++;
	}
	printf("最小公倍数为:%d",i*a);
}

22.小球从100高处自由落下,着地后又弹回高度的一半再落下。求第20次着地时,小球通过多少路程

#include <stdio.h>
main(){
	int n;
	double height;
	double distance;
	height=50;
	distance=100;
	n=2;
	while(n<=20){
		distance = distance + 2 * height;
		height = height/2;
		n = n + 1;
	}
	printf("小球共通过的路程为:%lf",distance);
} 

26.s=1+1/2!+1/3!+…+1/10!

#include <stdio.h>
main(){
	int n=0;
	double sum=0;
	int i,j;
	for(i=1;i<=10;i++){
		n=1;
		for(j=1;j<=i;j++){
			n=n*j;
		}
		sum=sum+1.0/n;
	}
	printf("sum:%lf",sum);
}

27.字母金字塔
在这里插入图片描述

#include <stdio.h>
main(){
	char ch;
	int i,j,k,c;
	for(i=1;i<=26;i++){
		ch=97;
		for(j=1;j<=26-i;j++)
			printf(" ");
		for(k=1;k<=i;k++){
			printf("%c",ch);
			printf(" "); 
			ch=ch+1;
		}
		printf("\n");
	}
}

28.百鸡问题:一只鸡公鸡值5元,一只母鸡值3元,而一元可以买三只小鸡。现有100元钱,想买100只公鸡,问可买公鸡母鸡小鸡各几只?

#include <stdio.h>
main(){
	int i,j,k;
	for(i=0;i<=20;i++){
		for(j=0;j<=33;j++){
			k=100-i-j;
			if(i*15+j*9+k==300){
				printf("公鸡:%d母鸡:%d小鸡:%d\n",i,j,k);
			}
		}
	}
}

29.编程求5!+7!+9!+11!

#include <stdio.h>
int f(int s){
	int i;
	int p=1; 
	for(i=1;i<=s;i++){
		p=p*i;
	}
	return p; 
}


main(){
	int s;
	int sum=0;
	for(s=5;s<=11;s=s+2){
		sum=sum+f(s);
	}
	printf("%d",sum);
} 

30.编程求2到n(n为大于2的正整数)中有多少个素数

#include <stdio.h>
int f(int j){
	int i;
	int result;
	int m=1;
	for(i=2;i<=j-1;i++){
		if(j%i==0){
			m=0;
			break;
		};
	}

}

main(){
	int n;
	int j;
	int sum=0;
	printf("请输入n的值为:");
	scanf("%d",&n);
	for(j=2;j<=n;j++){
		if(f(j)!=0){
			sum=sum+1;
		}
	}
	printf("%d\n",sum);
}

31.求正整数2和100之间的完全数
完全数:因子之和等于它本身的自然数 如6=1+2+3

#include <stdio.h>
int f(int j){
	int i;
	int m=0;
	int s=0;
	for(i=1;i<j;i++){
		if(j%i==0){
			s=s+i;
		}
		if(s==j){
			m=0;
		} else{
			m=1;
		}
	}return m;
}
int main(){
	int j;
	for(j=2;j<=100;j++){
		if(f(j)==0){
			printf("%d\n",j);
		}
	}
}

32.输入N个整数,找出最大数所在位置,并将它与第一个数对调位置。

#include <stdio.h>
main(){
 int i,b,j,n;
 int max=0;
 printf("请输入整数的个数:\n");
 scanf("%d",&n);
 int a[n];
 printf("请输入整数:\n");
 for(i=0;i<n;i++){
  scanf("%d",&a[i]);
 }
 b=a[0];
 for(i=1;i<n;i++){
  if(a[i]>max){
   max=a[i];
   j=i;
  }
 }
 a[0]=max;
 a[j]=b;
 for(i=0;i<n;i++){
  printf("%d ",a[i]);
 }
 getchar();
} 

33.将一个数组中的所有元素都倒序存放。

#include <stdio.h>
main(){
 int i,b,j,n;
 int max=0;
 printf("请输入整数的个数:\n");
 scanf("%d",&n);
 int a[n];
 printf("请输入整数:\n");
 for(i=0;i<n;i++){
  scanf("%d",&a[i]);
 }

 for(i=n-1;i>=0;i--){
  printf("%d ",a[i]);
 }
 getchar();
} 

34.国际象棋盘中,第1个放1粒米,第2格放2粒米,第3格放4粒米,第4格放8粒米,第5格放16粒米,…,问:16个格子总共能放多少粒米?

#include <stdio.h>
main(){
	int i,j,sum;
	int a[16];
	j=1;
	sum=0;
	for(i=0;i<=15;i++){
		a[i]=j;
		j=j*2;
	}
	for(i=0;i<=15;i++){
		sum=sum+a[i];
	}
	printf("%d",sum);
} 

35.读入n个数,打印其中的最大数及其位置号

#include <stdio.h>
main(){
	int n,i,max,j;
	printf("请输入数字的个数\n");
	scanf("%d",&n); 
	int a[n];
	printf("请输入n个数\n");
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	max=a[0];
	for(i=0;i<n;i++){
		if(max<a[i]){
			max=a[i];
			j=i;
		}
	}
	printf("最大数为%d\n",max);
	printf("最大数所在位置为第%d位\n",j+1);
}

36.有 52张朴克牌,使它们全部正面朝上。从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下:接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转;依此类推,直到第1张要翻的牌是第52张为止。统计最后有几张牌正面朝上,并打印出它们的位置。

#include <stdio.h>
main(){
	int i,j,sum;
	int a[52]={0};
	for(i=2;i<=52;i++){
		for(j=i-1;j<51;j++){
			if((j+1)%i==0){
				a[j]++;
			}
		}
	}
	for(i=0;i<52;i++){
		if(a[i]%2==0){
			sum++;
			printf("%d ",i+1);
		}
	}
	printf("一个有%d张纸牌正面朝上",sum);
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值