C语言初级

数据类型、数据的输出输入

4月9日
整型int,%d。浮点型float,%f。字符串char,%s。

课时2作业1

#include <stdio.h>

int main(){
  printf("hello wangdao");
  return 0;
}

输出hello wangdao

课时2作业2

#include <stdio.h>
int main(){
  int a,b;
  scanf("%d %d",&a,&b);
  printf("%d",a+b);
}

输入包含a和b,通过空格隔开。
需要输出a、b的和。

课时2作业3

读取一个65到122之间的整型数,然后以字符形式输出它,比如读取了97,输出字符a

#include <stdio.h>
int main(){
  int i;
  scanf("%d",&i);
  printf("%c",(char)i);
  return 0;
}

读取一个整型数,整型数 大于等于65,小于等于122。
输出整型数 在ASCII表中对应的字符.。

运算符与表达式

4月10日
逻辑运算符非、算术运算符、关系运算符、逻辑运算符与或、字节运算符

#include <stdio.h>
//#include <stdlib.h>
int main() {
    int result = 4 + 5 * 2 - 6 / 3 + 11 % 4;//练习算术运算符
    printf("result=%d\n", result);
    //关系运算符,优先级小于算术运算符
    int a;
    while (scanf("%d", &a)) {//如果输入的不是整型的时候,循环结束
        if (3 < a && a < 10) {//3<a<10的运算等级是一样的
            printf("a is between 3 and 10\n");
        } else {
            printf("a is not between 3 and 10\n");
        }
        int year, j = 2;//联系逻辑运算符
        while (scanf("%d", &year)) {
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {//判断是不是闰年
                printf("%d is leap year\n", year);
            } else {
                printf("%d is not leap year\n", year);
            }
        }
        year = !!j;
        printf("i value=%d\n", year);
        int i = 0;
        printf("%d\n", sizeof(i));//联系字节运算符
        i && printf("you can see me\n");//短路运算,当i为假的时候,不会执行后面的语句
        int p = 1;
        p && printf("you can see me\n");
        int m = 0;
        m || printf("you can not see me\n");//当j为真的时候,发生短路,不会执行后面的语句
        int a = 1, b = 2;
        a = 25 + b;//左边不可以进行赋值
        printf("%d\n", a);
        i += 5;//i=i+5
        printf("%d\n", i);
        m = +5;//
        printf("%d\n", m);
        return 0;
    }
}

课时3作业1

Description
判断某个年份是不是闰年,如果是闰年,请输出“yes”,否则请输出“no”

Input
输入一行,只有一个整数x (0<=x <=10000)

Output
输出只有一行字符

#include <stdio.h>
int main(){
  int i;
  scanf("%d",&i);
  if(i%4==0&&i%100!=0||i%400==0){
          printf("yes");
      }else{
          printf("no");
      }
  return 0;
}

课时3作业2

Description
读取一个整型数,字符,浮点数,分别到变量i,j,k中,然后将i,j,k直接相加并输出,小数点后保留两位小数,不用考虑输入的浮点数的小数部分超过了两位

Input
一个整型数,字符,浮点数

Output
i,j,k三个变量的求和值

#include <stdio.h>
int main(){
    int i;
    char j;
    float k;
    scanf("%d %c %f",&i,&j,&k);
    printf("%0.2f",i+j+k);
    return 0;
}

条件语句与循环

if-else选择语句

编写多个选择语句的时候

#include <stdio.h>

int main() {
    //练习if-else语句
    int i;
    while(scanf("%d",&i)){
        if(i>0){
            printf("i is bigger than 0\n");
        }else{
            printf("i is less than 0\n");
        }
    }
    return 0;
}

while循环

例1:计算从1到100的所有整数之和。

#include <stdio.h>

int main() {
    //练习while循环
    int i=0,j=0;
    //j代表总数
    while(i<100){//如果是等于100的话,最后就会再加101
        i=i+1;//i++,从B语言发展过来的
        j+=i;//j=j+i;
    }
    printf("%d",j);
    return 0;
}

for循环

例1:计算从1到100的所有整数之和。

#include <stdio.h>

int main() {
    //练习for循环
    int j=0;
    //j代表总数
    for(int i=0;i<=100;i++){
        j+=i;//j=j+i;
    }
    printf("%d",j);
    return 0;
}

continue语句

例:对1到100之间的奇数进行求和
在while循环里使用continue

#include <stdio.h>

int main() {
    //练习continue语句
    int j=0;
    //j代表总数
    for(int i=0;i<=100;i++){
        if(i%2==0){
            continue;
        }
        j+=i;//j=j+i;
    }
    printf("%d",j);
    return 0;
}

在for循环里使用continue

#include <stdio.h>

int main() {
    //练习for循环
    int i=0,j=0;
    //j代表总数
    while(i<=100) {//如果是等于100的话,最后就会再加101
        if (i % 2 == 0) {
            i++;
            continue;
        }
        j += i;//j=j+i;
        i=i+1;//i++,从B语言发展过来的
    }
    printf("%d",j);
    return 0;
}

break语句

例:对1到100之间的进行求和时,当和大于2000的时候,结束循环。并打印整数值。

#include <stdio.h>

int main() {
    //练习continue语句
    int i,j=0;
    //j代表总数
    for(i=0;i<=100;i++){
        if(j>2000){
            break;
        }
        j+=i;//j=j+i;
    }
    printf("%d %d",j,i);
    return 0;
}

课时4作业1

Description
输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;

例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no

Input
一个整型数

Output
输出是yes,或者no

#include <stdio.h>

int main() {
    int i,j=0,b,c;//b是暂存的作用
    scanf("%d",&i);
    c=i;
    while(i){
        b=i%10;
        j=j*10+b;
        i=i/10;
    }
    if(c==j){
        printf("yes\n");
    }else{
       printf("no\n");
    }
    return 0;
}

课时4作业2

Description
利用while或者for循环计算n!的值。

提示:n!=123…*n

Input
一个正整数n,1≤n≤10。

Output
n!的值。

#include <stdio.h>

int main() {
    int n,i,j=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++){
        j=j*i;
    }
    printf("%d",j);
    return 0;
}

课时4作业3

Description
某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?

Input
无输入

Output
一个数,表示共有多少种换法

#include <stdio.h>

int main() {
    int a,b,c,d,tol=0;

    for(a=1;a<=10;a++){//10
        for(b=1;b<=20;b++){//5
            for(c=1;c<=50;c++){//2
                for(d=1;d<=100;d++){//1
                    if(a+b+c+d==40&&a*10+b*5+c*2+d==100){
                        tol+=1;
                    }
                }

            }

        }
    }
    printf("%d",tol);
    return 0;
}

数组

4月18日
一维数组:其中定义数组的时候,访问内存位置是从0 开始的
int a[5]={1,2,3,4,5}; //其中a[0]=1.

#include <stdio.h>

int main() {
    int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};//10为数组中的个数
    //实际访问的数组是从a[0]到a[9],赋值要和定义写在一起
    int b[10] = {5, 6, 7, 8};//可以给部分元素赋值,赋值的是前4个,后6个的值为0
    printf("%d",a[0]+b[1]);
    return 0;
}

数组访问越界

操作系统对内存中的每一个位置给予一个编号
如果下标值是通过那些一致的正确的值计算得来的,就无须检查。
如果下标值是由用户输入的数据产生的,就需要检查,防止访问越界。

数组的传递

调试时进入子函数使用F7
数组的长度是不能传递到子函数的,子函数用的是指针

#include <stdio.h>
void print(int a[],int length){//这里的a[]是指针,所以是8个字节
    int i;
    for(i=0;i<length;i++)//sizeof(a)/sizeof(int)可以不定义数据的个数sizeof(a)只有8字节
    {//可以用整型来记录数组的长度length
        printf("%d\n",a[i]);
    }
    a[4]=10;
}
int main() {
    int a[5] = {0, 1, 2, 3, 4};//10为数组中的个数
    print(a,5);//此时sizeof(a)是20个字节。是因为数组不能传递到子函数
    print("%d",a[4]);//可以改变数组的值
    return 0;
}

字符串数组

#include <stdio.h>
//使用子函数模拟字符串数组的输出
void print(char b[]){
    int i=0;
    while(d[i]){
          printf("%c",d[i]);//输出的是一个个字符
          }
    printf("\n");
   }
int main() {
    char a[6] = "hello";//10为数组中的个数,定义的时候要多分配一个位置,因为字符串有一个结束字符\0
    printf("%s\n",a);
    char b[5]="how";
    print(d);
    return 0;
}

SCANF读取字符串

#include <stdio.h>

int main() {
    char a[6];
    scanf("%s",a);//字符数组中存储了数组的起始地址,所以不需要取地址
    printf("%s\n",a);
    return 0;
}

gets读取字符串

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值