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);
}