C语言基础练习

一.n!

#include <stdio.h>

int main(){
    int i=0;
    int n=0;
    int ret=1;
    printf("请输入所求哪个数的阶乘:");
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        ret=ret*i;
    }
    printf("所求%d的阶乘为%d\n",n,ret);
    return 0;
}

二.求1!+2!+....+10!

#include <stdio.h>


int main(){
    int i=0;
    int n=10;
    int ret=1;
    int sum=0;
    for(i=1;i<=n;i++){
        ret=ret*i;
        sum=sum+ret;
    }
    printf("所求的阶乘总和sum=%d",sum);
    return 0;
}

三.二分法查找数组里面的所需要数的下标

#include <stdio.h>
#include <string.h>
int main(){
    int arr[]={11,32,23,44,65,66,77,68,89};
    int sz=sizeof(arr)/sizeof(arr[0]);
    int left=0;
    int right=sz-1;
    int key =77
    while(left<=right){
        mid=(left+right)/2;
        if(arr[mid]>key){
            left=mid+1;
        }else if(arr[mid<key]){
            right=mid-1;
        }else{
            printf("找到了下标%d\n",mid);
            break;
        }
    }
    if(left>right){
        printf("没找到\n");
    }
    return 0;
}

四.数组替代

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
int main(){
    char arr1[]={"what is ur name ?"};
    char arr2[]={"*****************"};
    int left=0;
    int right=sizeof(arr)/sizeof(arr[0])-2;
    while(left<=right){
        arr2[left]=arr1[left];
        arr2[right]=arr1[right];
        printf("%s\n"arr[2]);
        Sleep(1000);
        system("cls");//清空屏幕,这个是执行系统命令的一个函数
        left++;
        right--;
    }
    if(left>right){
        printf("OVER\n");
    }
    return 0;
}

五.练习一个输入密码三次,超过就失败。

#include <stdio.h>

int main(){
    int i=0;
    char password[]={0};
    for(i=0;i<3;i++){
        printf("请输入密码:\n");
        scanf("%d",password);
        if(strcmp(password,"123456")==0){
            printf("登录成功\n");
            break;
        }else{
            printf("登录失败\n");
        }
    }
    if(i==3){
           printf("次数已经用完,请稍后再试\n");
    }
    return 0;
}

六.关键字

C语言的关键字是一组具有特殊含义的保留词,用于定义程序结构和控制流程。它们在C语言中有着特定的作用,不能用作变量名、函数名或用户自定义标识符。以下是一些主要的C语言关键字:

1. auto(自动变量)
2. break(跳出循环)
3. case(switch语句中的每个选项)
4. char(字符类型)
5. const(常量)
6. continue(跳过当前循环的剩余部分并开始下一轮)
7. default(switch语句中未指定case的默认行为)
8. do...while(条件先判断的循环)
9. double(双精度浮点数)
10. else(if语句的否定分支)

        ...还有很多其他的关键字,如for, while, if, struct, enum, typedef, extern等。熟悉这些关键字有助于编写有效的C代码。

         在 C 语言或类似的编程中,switch 语句主要用于根据表达式的值执行一系列相关的代码块,这些代码块被称为 case 块。switch 结构通常不直接支持 if 语句的嵌套,因为它的本质是匹配和跳转,而不是条件判断。

        然而,如果你想模拟一种类似于 if-else 的控制结构,可以在 switch 后面加上一个 fallthrough 或者 continue 来间接达到类似的效果。例如:

switch(expression) {
    case value1:
        // 执行对应的代码
        break;  // 如果不需要继续下一个 case,则添加此行终止当前 case

    /* 在这里你可以选择:
       * 不加 break 并用 if 判断作为“默认”情况(但通常不是最佳实践)
       */
    case value2:
        if (some_condition) {
            // 执行额外的逻辑
        } else {
            // 继续执行下一条 case
            continue;
        }

    default:
        // 处理所有其他未匹配的情况
        if (another_condition) {
            // ...
        }
        break;  // 标准做法是在 default 块后结束 switch
}

        这样虽然没有完全像 if 语句那样灵活,但可以通过组合使用来完成类似的功能。不过,这种设计并不常见,因为它可能会降低代码的可读性和效率。通常,switch 用于明确的选择分支,而 if-else 更适合处理复杂的条件判断。

 七.输入三个数,从大到小排

#include <stdio.h>
int main(){

    int a,b,c=0;
    please("请输入三个数:\n");
    scanf("%d%d%d",&a,&b,&c);
    if(a<c){
        int temp=a;
        a=c;
        c=temp;
    }
    if(b<c){
         int temp =b;
         b=c;
         c=temp;
    }
    if(a<b){
         int temp =a;
         a=b
         b=temp;
    }
    printf("从大到小排序:\n"a,b,c);
    return 0;
}

八.找到100以内,3的倍数的数

#include <stdio.h>

int main(){
    int i=0;
    for(i=1;i<100;i++){
        if(i%3==0){
            printf("%d ",i);
        }
    }
    return 0;
}

九.辗转相除法计算最大公约数

#include <stdio.h>

int main(){
    int m=0;
    int n=0;
    int r=0;
    printf("请输入两个数:\n");
    scanf("%d%d",&m,&n);
    while(m%n){
        r=m%n;
        m=n;
        n=r;
    }
    printf("最大公约数为:%d\n",r);
    return 0;
}

十.计算1948---2024年的闰年

#include <stdio.h>

int main(){
    int year=0;
    int count=0;
    for(year=1948;year<2024;i++){
        if(year%4==0 && year%100!=0){
            printf("%d ",year);
            count++;
    }else if(year%400==-0){
            printf("%d ",year);
            count++;
    }    
    }
    printf("总得闰年数为%d\n",count);
    return 0;
}

十一.计算100到200的素数

#include <stdio.h>

int main(){
    int i=0;
    int j=0;
    int count=0;
    for(i=100;i<=200;i++){
        for(j=2;j<i;j++){
            if(i%j==0){
                break;
            }
        }
    if(j==i){
        count++;
        printf("素数为%d ",j);
    }
  }
    printf("总的素数量为:%d",count);
    
    return 0;

}

十二.优化计算100到200之间的素数

#include <stdio.h>
#include <math.h>
int main(){
    int i=0;
    int j=0;
    int count=0;
    for(i=100;i<=200;i++){
        for(j>2;j<sqrt(i);j++){
            if(i%j==0){
                break;
            }
        }
        if(i>sqrt(j)){
            count++;
            printf("%d ",i);
        }
    }
    printf("\ncount=%d\n",count);
    return 0;
}

十三.计算1-100之间位数上面有9的数字的给个数

#include <stdio.h>
int main(){
    int i=0;
    int count =0;
    for(i=1;i<200;i++){
        if(i%10==9){
            count++;
        }
        if(i/10=9){
            count++;
        }
    }
    printf("总的含9的数字的个数为%d",count);
    return 0;
}

十三.计算1/1-1/2+1/3-1/4+1/5-1/6+...+1/99-1/100的值

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

十四.找到数组中随机数字的最大数字

#include <stdio.h>
int main(){
    int arr[]={11,17,15,77,88,99,33,66,9,19};
    int i=0;
    int max=arr[0];
    int sz=sizeof(arr)/sizeof(arr[0]);
    for(i=1;i<sz;i++){
        if(arr[i]>max){
            max=arr[i];
        }
    }
    printf("数组中最大数是%d ",max);
    return 0;
}

十五.乘法口诀表

#include <stdio.h>
int main(){
    int i=0;
    for(i=1;i<=9;i++){
        int j=1;
        for(j=1;j<=i;j++){
            printf("%d*%d=%d ",i,j,i*j);
        }
    }
    pintf("\n");
    return 0;
}

十六.猜数字游戏

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu(){
    printf("************************\n");
    printf("******GO:1****close:0***\n");
    printf("************************\n");
}
void game(){
    int ret=0;
    int guese=0;
    ret=rand()%100+1;
    printf("请输入1-100的数字:\n");
    scanf("%d",&guess);
    while(1){
        if(guess>ret){
            printf("猜大了\n");
        }
        else if(guess<ret){
            printf("猜小了\n");
        }
        else{
            printf("猜对了");
            break;
        }

    }
}
int main(){
    menu();
    srand((unsigned int)time(NULL));
    int input=0;
    do{
        printf("请选择是否进入游戏:\n");
        scanf("%d",&input);
        switch(input){
            case 1:
                printf("游戏开始\n");
                game(); 
                break;
            case 0:
                printf("游戏结束\n");
            break;
            defulat:
                printf("选择错误,重新选择");
            break;
        }
    }while(intput)
    return 0;
}

十七.用goto写一个关机程序

#include<stdio.h>
int main(){
    char arr[20]={};
    system("shutdown -s -t 60");
again:
    printf("请输入我是猪,否则60秒后会自动关机\n");
    scanf("%s",arr);
    if(strcmp(arr,"我是猪)==0){
        system("shutdown -a");
    }else{
        goto again;
    }
    return 0;
}

十八.使用strcpy函数

#include <stdio.h>
int main(){
    char arr1[]={"what is ur name?"};
    char arr2[]={"hello world"};
    strcpy(arr2,arr1);
    printf("%s",arr2);
    return 0;
}

十九.memset函数

#include <stdio.h>
int main(){
    char arr[]={"hello world"};
    memset(arr,'*',5);
    printf("%s",arr);
    return 0;
}

二十.指针和自定义函数来进行函数交换

#include <stdio.h>
void swap(int* x,int *y){
    int temp=0;
    temp=*x;
    *x=*y;
    *y=temp;
}
int main(){
    int a=66;
    int b=77;
    swap(&a,&b);
    printf("交换后的a值为%d,b值为%d,a,b);
    return 0;
}

二十一.指针和自定义函数来进行素数的查找

#include <stdio.h>
#include <math.h>
void is_sushu(int i){
    int j=0;
    for(j=2;j<=sqrt(i);j++){
        if(i%j==0){
           return 0;
        }
    }
    return 1;
}
int main(){
    int i=0;
    for(i=1;i<100;i++){
        if(is_sushu(i)==1)
        printf("%d ",i);
    }
    return 0;
}

二十一.sprintf函数的调用

#include<stdio.h>

int main(){
    char buffer[128]={0};
    int n,a=5,b=6;
    n=sprintf(buffer,"%d*%d=%d",a,b,a*b);//如果成功,则返回写入的字符总数。
    printf("[%s]is string char of %d",buffer,n);
    return 0;
}

二十二.fwrite和fopen函数的使用

#include <stdio.h>
int main(){
    FILE *op;
    char buffer[20]={"what is ur name?"};
    op=fopen("project.bin","wr");
    fwrite(buffer,sizeof(char),sizeof(buffer),op);
    fclose(op);
    return 0;
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值