Press "Enter" to skip to content

Category: C

C编程练习1120

输入三个不同的整数,找出最小的整数。


#include <stdio.h>
int main(int argc, char **argv)
{
    int a=0,b=0,c=0,min=0;

    while(1){
        puts("输入三个整数:");
        printf("第一个整数A:\n");scanf("%d",&a);
        printf("第二个整数B:\n");scanf("%d",&b);
        printf("第三个整数C:\n");scanf("%d",&c);
        if(a==b || b==c || a==c ){
            puts("请不要输入重复的数字!");
        }
        else break; 
    }

    if(a>b){
        min = b;
        if(min>c){
            puts("最小的数字是C!");
        }
        else{
            puts("最小的数字是B!");
        }
    }
    else{
        min=a;
        if(min>c){
            puts("最小的数字是C!");
        }
        else{
            puts("最小的数字是A!");
        }
    }
    return 0;
}

输入四个整数,找出其中最大值。


#include <stdio.h>
int main()
{
    int a=0,b=0,c=0,d=0,e=0,f=0,g=0;

    puts("请输入四个整数:");
    printf("第一个整数A:");scanf("%d",&a);
    printf("第二个整数B:");scanf("%d",&b);
    printf("第三个整数C:");scanf("%d",&c);
    printf("第四个整数C:");scanf("%d",&d);

    e = (a>b)?a:b;
    f = (c>d)?c:d;
    g = (e>f)?e:f;

    printf("最大的数是:%d",g);
    return 0;
}

C编程练习1118

输入一个一到一百的正整数。判断该数是否和7有关系。关系是指7的倍数、数字里面有7.


#include <stdio.h>
int main(int argc, char **argv)
{
    int num;
    //puts("请输入一个正整数:");
    //scanf("%d",&num);

    for(num=1;num<101;num++)
        if(num%7==0 || num%10==7 || num/10==7){
            printf("数字%d和7有关系\n",num);
        }
        else{
            printf("数字%d和7没有关系\n",num);
        }   

    return 0;
}

假设北京出租车计算方式如下,前3公里为起步价13元,3公里以后每增加1公里加2元。 编程实现输入距离(正整数),输出出租车费用。


#include <stdio.h>
int main(int argc, char **argv)
{
    int distance;

    puts("请输入里程:");
    scanf("%d",&distance);

    if(distance<4){
        puts("请支付车费¥13元!");
    }
    else{
        printf("请支付车费¥%d元!\n",13+(distance-3)*2);
    }

    return 0;
}

计算地铁票价。
起步价6公里以内每人3元,6~12公里为4元,12~32公里为每公里加1元,32公里以上每公里加1元,且上不封顶。


#include <stdio.h>
int main(int argc, char **argv)
{
    int distance=0;
    puts("请输入单人单程里程数:");
    scanf("%d",&distance);

    if(distance<6){
        puts("请支付¥3元!");        
    }
    if(distance>5&&distance<12){
        puts("请支付¥4元!");
    }
    if(distance>11&&distance<32){
        printf("请支付¥%d元!\n",5+(distance-12)/10);
    }   
    if(distance>31){
        printf("请支付¥%d元!\n",5+2+(distance-32)/20);
    }   

    return 0;
}

C语言的练习1117

读取两个整数,然后显示出前者是后者的百分之几。例如,输入54和84,显示x的值是y的64%。

#include <stdio.h>
int main(int argc, char **argv)
{
    float x,y;

    puts("输入两个整数,x和y。");
    printf("x:"); scanf("%f",&x);
    printf("y:"); scanf("%f",&y);

    printf("x的值是y的值的%.f%%",x/y*100);
    return 0;
}

读取两个整数,然后求出后者是前者的百分之几。例如,输入54和84,显示的x值是y的64.285714%。

#include <stdio.h>
int main(int argc, char **argv)
{   
    int x,y;

    puts("请输入两个整数:");

    printf("x:"); scanf("%d",&x);
    printf("y:"); scanf("%d",&y);

    printf("它们的平均值是:%.8f%%",(double)x/y);

    return 0;
}

输入身高值,输出标准体重

#include <stdio.h>
int main(int argc, char **argv)
{
    int height;

    puts("请输入您的身高:");
    scanf("%d",&height);

    printf("您的标准体重是:%.1f公斤",(double)(height - 100)*0.9);
    return 0;
}

判断某一年是否是闰年。能被4整除,不能被100整除,如果能被400整除也是闰年。先输入年份,然后进行判断。

#include <stdio.h>
int main()
{
    int year;
    puts("请输入年份:");
    scanf("%d",&year);

    if((year%4 == 0 && year%100 != 0) || year%400 ==0)
        printf("%d年是闰年.\n",year);
    else
        printf("%d年不是闰年.\n",year);

    return 0;
}

C控制语句:循环

循环是一个强大的编程工具。

在建立循环时应该特别注意三个方面:
1. 明确定义结束循环的条件;
2. 确保在循环判断中使用的值在第一次使用之前已经初始化;
3. 确保循环在每个周期中更新了判断值。

C通过数值计算来处理判断条件。

结果为0表示假,任何其他值都为真。使用了关系运算符的表达式通常被用来进行判断,它们有些特殊。如果为真,关系表达式的值为1,为假则为0,这与布尔类型所允许的值保持一致。

数组由相同类型的邻近内存位置组成。

需要谨记数组元素是从0开始编号,这样最后一个元素的下标就比元素的个数少1。C并不检查是否使用合法的下标值。

使用一个函数需要完成三个步骤:

  • 使用函数原型声明该函数;
  • 在程序中通过函数调用来使用函数;
  • 定义函数
    原型使编译器可以检查您是否正确使用了函数,而定义则规定了函数如何工作。现代的编程习惯市把程序的元素分为接口和实现部分。

C为实现程序的结构话提供了很多帮助。

while和for语句提供了入口条件循环,for语句特别适合那些包含有初始化和更新的循环。逗号运算符使您可以在一个for循环中初始化和更新多个变量。在不多的场合中也需要退出条件循环,do while语句就是一个典型。
所有这些循环都使用一个判断条件来决定是否执行另一个循环周期。一般而言,如果判断表达式等于一个非零值,循环就继续;否则就结束。

逗号运算符

//postage.c -- 一类邮资费率
#include<stdio.h>
#include<stdlib.h>
int main(void){
    const int FIRST_OZ = 37;
    const int NEXT_OZ = 23;
    int ounces, cost;

    printf(" ounces cost\n");
    for(ounces=1, cost=FIRST_OZ; ounces<=16; ounces++, 
                                    cost=cost+NEXT_OZ)
    /*逗号运算负扩展了for循环的灵活性,
     * 可以在一个for循环中使用多个初始化或者更新表达式。
     * 该运算符具有两个属性。
     * 1.被它分开的表达式按从左到右的次序进行计算。
     * 2.整个逗号表达式的值都是右边成员的值。*/
    {
        printf("%5d $%4.2f\n", ounces, cost/100.0);     
    }
    return 0;   
}

在for循环中使用数组

// scores_in.c  --  使用循环进行数组处理
#include<stdio.h>
#define SIZE 10
#define PAR 70
int main(void){
    int index,score[SIZE];
    int sum = 0;
    float average;

    printf("Enter %d golf scores: \n", SIZE);
    for(index = 0; index < SIZE; index++){
        scanf("%d", &score[index]);
    }
    printf("The scores read in are as follows: \n");
        for(index=0;index < SIZE; index++){
        printf("%5d", score[index]);
    }
    printf("\n");

    for(index = 0; index < SIZE; index++){
        sum += score[index];
    }
        average = (float) sum / SIZE;
    printf("Sum of scores = %d, average = %.2f\n", sum, average);
    printf("That's a handicap of %.0f.\n", average - PAR);

    return 0;
}

带返回值的函数

//power.c -- 计算数值的整数次幂
#include <stdio.h>
#include <math.h>  //数学头文件
double power(double n, int p);  //函数原型
double power(double n, int p)   //函数定义
    {
    double pow = 1;
    int i;

    for(i=1;i<=p;i++){
        pow *= n;
        }
        return pow; //!带返回值的函数
    }

int main(void){
    double x, xpow; //属于的双精度浮点数
    int exp;    //整数次幂

    printf("Enter a number and the postive integer power.");
    printf(" to which\nthe number will be raised.Enter q");
    printf(" to quit.\n");

    while(scanf("%lf%d", &x, &exp) == 2)
    /*当scanf()成功读入两个值的时候开始循环*/
    {
        xpow = power(x,exp);
        printf("%.3g to the power %d is %.5g\n", x, exp, xpow);
        printf("Enter next pair of numbers or q to quit.\n");
    }
    printf("Hope you enjoyed this power trip -- bye!\n");

    return 0;   
}