c语言练习 循环结构 缓冲区 逗号表达式

12月12随笔

%p输出地址

int arr[1]; printf("%p",arr1); //打印数组首地址

键盘缓冲区

scanf和getchar 函数是在缓冲区里取东西的,如果缓冲区中为空才会等待取东西。

scanf("password");           //这里scanf会从缓冲区拿走\n之前的值,留下一个\n
//fflush(stdin);               //刷新缓冲区
while((ch = getchar()) != '\n'){}    //手动刷新缓冲区
repassword = getchar();                 //不刷新缓冲区的话,getchar会把\n拿走

int 定义ch,getchar()返回的就是int值

int ch = 0;
while(ch = getchar() != EOF){}; 

逗号表达式

逗号表达式从左到右依次计算,最后将最右边值赋给表达式

存在的意义:这个纯粹就是为了在只能写一条表达式的地方写多条表达式而设计的

for(i = 0 ,j = 0; j<2, j<5 ;i++, j++){    //在条件判断中,j<5 是判断条件
  printf();
}

练习1.输出菱形

#include <stdio.h>
#define n 7
int main(){
    int i,j,k;
    for (i = 1 ;i <=n;i++){
        for(j = 0;j <n- i;j++){
            printf(" ");
        }
        for(k = 0;k < 2*i-1;k++){
            printf("*");
        }
        printf("\n");
    }
    for( i = n-1;i >= 1;i--){
        for(j = 0;j <n - i;j++){
            printf(" ");
        }
        for(k = 0;k < 2*i-1;k++){
            printf("*");
        }
        printf("\n");
    }

} 

这里写图片描述
2.

求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”

#include <stdio.h>
int main(){
    int l,m,n,i;
    for (i = 0;i<=999;i++){
        l = i%100%10;  //个位  
        m = (i/10)%10;  //十位
        n = i/100;   //百位
        //printf("%d = %d %d %d \n",i,l ,m,n);
        if(l*l*l+m*m*m+n*n*n == i){
            printf("%d\n",i);
        } 
    }

}

3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222

#include <stdio.h>
#define n 9
int main(){
    int i,j,tmp,sum = 0;
    for(i =0; i<5;i++){

        for(j =0,tmp= 0;j<=i;j++){      
            tmp*=10;
            tmp+=n;
        }
        printf("%d\n",tmp);
        sum += tmp;
    }
    printf("sum = %d",sum);
}

4.编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现

#include <stdio.h>

int main(){
    int balance = 0;
    int i=0;
    int ch = 0;
//  FILE  *fp;
//  fp = fopen("test.c","r");
    freopen("test.c","r",stdin);      //重定向
    while(scanf("%c",&ch) != EOF){       //用getchar()不行 ?? 
        //printf("%c",ch);
        if(ch=='{'){
            balance +=1;
        }
        else if(ch== '}'){
            balance -=1;
        }
        i++;
    }
//  fclose(fp);
    if(balance == 0){
        printf("括号成对出现!!");
    }
    else if(balance > 0) 
        printf("也许多了一个左括号哦");
    else 
        printf("也许多了一个右括号哦");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值