栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言编程基础题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言编程基础题

1、编程题,输入一个数字和字母,输出字母加上数字对应的字母。(注意不要输入太大的数字,防止越界)
#include 
int main(int argc, char *argv[])
{
    int a = 0;
    char b;
    scanf("%d %c",&a,&b);
    printf("%cn",a + b);
    return 0;
} 

2、编程题,从键盘输入a、b、c的值,求一元二次方程 ax^2+bx+c=0的根。
Sqrt();
#include 
-lm (制定库名)
B*b – 4ac >=0
    
#include 
#include 
int main(int argc, char *argv[])
{
    float a = 0.0,b = 0.0,c = 0.0;
    while(scanf("%f %f %f",&a,&b,&c) != EOF)
    {
        if(a != 0)
        {
            float disc = b * b - 4 * a * c;
            if(disc > 0.0)
                printf("x1 = %f,x2 = %fn",(-b + sqrt(disc))/(2*a),(-b - sqrt(disc))/(2 * a));
            else if(disc < 0.0)
                printf("errorn");
            else
                printf("x1 = x2 = %fn",(-b)/(2 * a));
        }

        else
            printf("NOTn");
    }
    return 0;
}     
一、控制语句 1、顺序语句

​ C语言所有语句都是顺序执行的

2、分支语句
(1)单分支
    if(表达式)
    {
        语句块1;
    }
	else
    {
        语句块2;
    }
如果表达式为真,则执行语句块1
    如果为假,则执行语句块2
    
三目运算符 (表达式1)?(表达式2):(表达式3)

(2)多分支
    if(表达式1)
    {
        语句块1;
    }
	else if(表达式2)
    {
        语句块2;
    }
	...
    else
    {
        语句块n;
    }
如果表达式1为真,则执行语句块1
如果为假,则判断表达式2,如果表达式2为真,则执行语句块2
    ...
如果前面的表达式都为假,则执行语句块n
    
练习:
1、输入一个学生的成绩,判断他的成绩等级
    90 - 100 A
    80 - 90 B
    70 - 80 C
    60 - 70 D
    60以下 不及格
    
#include 
int main(int argc, char *argv[])
{
    float s = 0;   
    while(1)
    {
        printf("Please input your score:n");
        scanf("%f",&s);
        if(s >= 0 && s <= 100)
        {
            if(s >= 90 && s <= 100)
                printf("An");
            else if(s >= 80 && s < 90)
                printf("Bn");
            else if(s >= 70 && s < 80)
                printf("Cn");
            else if(s >= 60 && s < 70)
                printf("Dn");
            else
                printf("Fn");
        }
        else
            printf("errorn");
    }
    return 0;
} 

2、输入a b c 三个数 比较它们的大小
#include 

int main(int argc, char *argv[])
{
    int a,b,c;
    printf("Please input three numbers:n");
    scanf("%d %d %d",&a,&b,&c);
    if(a != b && a != c && b != c)
    {
        if(a > b && a > c)
        {
            if(b > c)
                printf("a > b > cn");
            else
                printf("a > c > bn");
        }
        else if(b > a && b > c)
        {
            if(a > c)
                printf("b > a > cn");
            else
                printf("b > c > an");
        }
        else if(c > b && c > a)
        {
            if(a > b)
                printf("c > a > bn");
            else
                printf("c > b > an");
        }
    }
    else if(a == b)
    {
        if(a > c)
            printf("a = b > cn");
        else if(a < c)
            printf("c > a = bn");
        else
            printf("a = b = cn");
    }
    else if(a == c)
    {
        if(a > b)
            printf("a = c > bn");
        else if(a < b)
            printf("b > a = cn");
        else
            printf("a = b = cn");
    }
    else if(b == c)
    {
        if(b > a)
            printf("b = c > an");
        else if(b < a)
            printf("a > b = cn");
        else
            printf("a = b = cn");
    }
    return 0;
} 
3、选择语句
switch(表达式)  //整型 或 字符型
{
    case 选项的值:
        语句块;
        break;
    case 选项的值:
        语句块;
        break;
        ...
    default:
        语句块;
}

先执行表达式,通过case的值选择相对应的选项,执行对应的语句块
如果没有对应的选项,会寻找default接口,然后执行default后面的语句块
如果没有找到default,则跳出switch
    
break -- 跳出整个循环
continue -- 跳出本次循环
    
eg:
int main()
{
    int c = 0, k = 0;
    for(k = 1; k < 4; k++)
    {
        switch(k)
        {
            default:c += k;
            case 2:c++;break;
            case 4:c += 2;break;
		}
    }
    printf("c = %dn",c);
    printf("k = %dn",k);
}
输出c=7,k=4

练习:1、输入年月日,判断它是这一年的第几天
    步骤:(1)输入年月日
    (2)用switch case罗列出每一个月份前面的天数
    (3)计算在非特殊情况下,某月某日是第几天
    (4)判断特殊情况+1天
    (5)打印
    
#include 
int main(int argc, char *argv[])
{
    int day,month,year,sum,flag;// flag标志位
    printf("Please input year,month,day:n");
    scanf("%d %d %d",&year,&month,&day);
    switch(month)
    {
        case 1:sum = 0;break;
        case 2:sum = 31;break;
        case 3:sum = 59;break;
        case 4:sum = 90;break;
        case 5:sum = 120;break;
        case 6:sum = 151;break;
        case 7:sum = 181;break;
        case 8:sum = 212;break;
        case 9:sum = 243;break;
        case 10:sum = 273;break;
        case 11:sum = 304;break;
        case 12:sum = 334;break;
        default:
                printf("errorn");
    }
    sum += day;
    if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
        flag =1;
    else
        flag = 0;
    if(flag == 1 && month > 2)
        sum ++;
    printf("It is the %dth day in this yearn",sum);
    return 0;
} 
4、循环语句 – 多次去执行同一段代码
1、for循环
    for(表达式1;表达式2;表达式3)
    {
        循环体;
    }
表达式1:赋值语句
表达式2:循环判断条件
表达式3:改变循环判断条件变量的值
    
执行步骤:
	1、执行表达式1
    2、判断表达式2,如果为真则执行循环体
        如果为假,则跳出循环
    3、执行完循环体,执行表达式3
    4、重复跳到步骤2
    
练习:
1、实现n!
    
#include 
int main(int argc, char *argv[])
{
    long long sum = 1;
    int i,value;
    printf("Please input a number:n");
    scanf("%d",&value);
    if(value < 0)
        printf("errorn");
    else if( value == 0)
        printf("0! = 1n");
    else
    {
        for(i = 1; i <= value; i++)
        {
            sum *= i;
        }
        printf("%d! = %lldn",value,sum);
    }
    return 0;
} 

2、求3 - 300 之间的素数,并打印到终端(素数:只能整除1  和  本身)
    
#include 
int main(int argc, char *argv[])
{
    int i,j,flag;
    for(i = 3; i <= 300 ;i++)
    {
        for(j = 2; j < i; j++)
        {
            flag = 1;
            if(i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if(flag == 1)
            printf("%dn",i);
    }
    return 0;
} 

3、打印一个倒直角三角形
#include 
int main(int argc, char *argv[])
{
    int i,j,n;
    scanf("%d",&n);
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < i; j++)
            printf(" ");
        for(j = 0; j < n - i ; j++)
            printf("*");
        printf("n");
    }
    return 0;
}    

2、while -- 先判断再循环
    while(表达式)
    {
        循环体;
    }
先判断表达式是否为真,如果为真则执行循环体
    如果为假,则跳出循环
    
3、do ... while -- 先循环再判断
    do{
        循环体;
    }while(表达式);
先执行一次循环体,再判断表达式
    如果表达式为真,则继续执行循环体
    如果为假,则跳出循环
    
练习:输入几个数,一直到0结束输入,求总和 平均值
#include 

int main(int argc, char *argv[])
{
    int number = 0;
    double sum = 0.0;
    int count = 0;

    while(1)
    {
        printf("Please input a number:n");
        scanf("%d",&number);
        
        if(number == 0)
            break;

        count++;
        sum += number;

    }
    printf("sum = %lf,aver = %lf,count = %dn",sum,sum/count,count);


    return 0;
} 
#include 

int main(int argc, char *argv[])
{
    int number = 0;
    double sum = 0.0;
    int count = 0;

    scanf("%d",&number);

    while(number)
    {
        count++;
        sum += number;

        scanf("%d",&number);

    }
    printf("sum = %lf,aver = %lf,count = %dn",sum,sum/count,count);


    return 0;
} 

#include 

int main(int argc, char *argv[])
{
    int number = 0;
    double sum = 0.0;
    int count = 0;

    
    do{
        printf("Please input a number:n");
        scanf("%d",&number);
        
        count++;
        sum += number;

    }while(number);
    count--;

    printf("sum = %lf,aver = %lf,count = %dn",sum,sum/count,count);


    return 0;
} 
     实现求一个非负十进制数里面包含的二进制1 有几个
 #include 

int main(int argc, char *argv[])
{
    int value,count = 0;
    scanf("%d",&value);

    while(value)
    {
        value &= (value - 1);
        count ++;
    }

    printf("%dn",count);

    return 0;
} 

#include 

int main(int argc, char *argv[])
{
    int t,value,count = 0;
    scanf("%d",&value);

    if(value)
    {
        do{
         t = value % 2;
         if(t)
             count++;
        }while(value /= 2);

        printf("%dn",count);
    }

    return 0;
} 






















暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015190.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号