小技巧:程序return前加个getchar();可以让程序停住。%%可以打印使printf()中打印出%号

#include<stdio.h>
#define SPACE ''
int main(void)
{
char ch;

ch = getchar();
while(ch != '\n')
{
if(ch == SPACE)
putchar(ch);
else
putchar(ch+1);
ch = getcahr();

}
putchar(ch); //打印换行符
return 0;

}

//ctype.h系列字符函数

#include<stdio.h>
#include<ctype.h>
int main(void)
{
char ch ;

while((ch = getchar()) != '\n')
{
if(isalpha(ch)) //如果是字母
putchar(ch+1);
else
putchar(ch);

}
putchar(ch);
return 0;

}

//使用嵌套if显示一个数的约数
/*
这段代码的可取之处在于用了_Bool类型,定义了一个判断变量isprime
*/

#include<stdio.h>
#include<stdbool.h>
#include<math.h>
int main(void)
{
unsigned long num;
unsigned long div;
bool isprime;

printf("Please enter an integer for analysis: ");
printf("Enter q to quit.\n");
while(scanf("%lu",&num)==1)
{
for(div = 2,isprime = true;div <= sqrt(num);div++)
{
if(num % div == 0)
{
if(div*div != num)
printf("%lu is divisible by %lu and %lu.\n",
num,div,num/div);
else
printf("%lu is divisible by %lu.\n",num,div);
isprime = false;
}

}

if(isprime)
printf("%lu is prime.\n",num);
printf("Please enter another integer for analysis: ");
printf("Enter q to quit.\n");

}
printf("Bye.\n");
return 0;

}

//使用逻辑与运算符
#include<stdio.h>
#define PERIOD '.'
int main(void)
{
int ch;
int charcount = 0;

while((ch = getchar()) != PERIOD)
{
if(ch !='"' && ch != '\n') // "是不要\号的啊!
charcount++;


}
printf("There are %d non-quote characters.\n",charcount);

return 0;

}

&&,||,!的说明
/*
1. !的优先级高于乘法运算,和增量运算符的优先级相同,仅次于圆括号。&&的优先级高于|| ,这两者的优先级都低于关系运算符而高于赋值运算。
2. &&和||是序列的分界点,因此在程序从一个操作数进入下一个操作数前,所有的副作用都会生效
3. C保证一旦发现某个元素使表达式整体无效,求值将立刻停止
4. if(90<range<100)这样写是错的!
*/

//统计字符、单词和行
#include<stdio.h>
#include<ctype.h>
//#include<stdbool.h>
#define STOP '|'
int main(void)
{
char c; //读入的字符
char prev; //前一个读入字符
long n_char = 0L; //字符数
int n_lines = 0; //行数
int n_words = 0; //单词数
int p_lines =0; //不完整的行数
bool inward =false; //如果c在一个单词中,则inward等于true

printf("Enter text to be analyzed(| to terminate):\n");
prev = '\n';

while((c = getcahr())!=STOP)
{
n_char++;

if(c == '\n')
n_lines++;

if(!isspace(c) && !inword) //不是空格,并且c不处于一个单词里
{
inword = true;
n_words++;
}

if(isspace(c) && inword)
inword = false;

prev = c;

}
if(prev !='\n')
p_line = 1;

printf("Characters = %ld,words = %d,lines = %d,",n_char,n_words,n_lines);
printf("partial lines = %d\n",p_lines);

return 0;

}

条件运算符的使用
/*
1.用于表达式中赋值
2.用于printf()中的参数:printf("%d",cans == 1?"can":"cans");
*/

switch:
/*
1.程序按照expression值跳转到相应的case标签处,然后程序流程继续通过所有剩余的语句,直到再次由break语句重定向。
expression和case标签必须都是整数型(包括类型char),并且标签必须是常量或者完全由常量组成的表达。
*/




continue和break:
1.break语句用于循环和switch中,而continue仅用于循环(switch在循环中可以用,但效果与在其他循环中相同)

跳过输入行的剩余部分:
while(getchar() != '\n')
continue;

goto:
1.出现故障时从一组嵌套的循环中跳出

//使用多重标签
#include<stdio.h>
int main(void)
{
char ch;
int a_ct,e_ct,i_ct,o_ct,u_ct;

a_ct = e_ct = i_ct = o_ct = u_ct = 0;

printf("Enter some text: enter # to quit.\n");
while((ch = getchar()) != '#')
{
switch(ch)
{
case 'a':
case 'A': a_ct++;
break;
case 'e':
case 'E': e_ct++;
break;
case 'i':
case 'I': i_ct++;
break;
case 'o':
case 'O': o_ct++;
break;
case 'u':
case 'U': u_ct++;
break;

default: break;
}
}

printf("number of vowels:A E I O U\n");
printf(" %-4d %-4d %-4d %-4d %-4d\n",
a_ct,e_ct,i_ct,o_ct,u_ct);

getchar();

return 0;

}

---------------------------------------------------------字符输入/输出和输入确认----------------------------------------------------------------------------

缓冲区:
/*
1.延迟回显是缓冲(buffered)输入的实例,输入的字符被收集并存储在一个被称作缓冲区(buffer)的临时存储区域内,按下回车键可使您键入的字符块对程序变得有用。
2.交互式程序:如游戏,使用非缓冲输入,
3.缓冲分为:完全缓冲和行缓冲,完全缓冲在缓冲区满时进行清空,行缓冲在遇到一个换行符时就清空缓冲区:如键盘输入;
4.#include<conio.h>中getch()可用于不回显,getche()用于回显

5.低级I/O包--宿主操作系统的基本文件工具
标准I/O包--包括创建用于处理文件的I/O函数的标准模型和标准集

6.使用标准I/O包,就屏蔽了系统差异,I/O函数自动进行转化

7.系统识别文件结尾的方法不同,C让getchar()函数在到达文件结尾时返回一个特殊值,而不去管操作系统如何检测文件结尾的

*/

/*
从键盘模仿文件结尾的条件,不同系统发送文件尾信号的方式不同。
在cmd下cl 命令编译文件,指定时要说明文件的类型,exe文件不需要
文件的结束符号不同
*/

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

while((ch = getchar()) != EOF)
putchar();
return 0;

}

//打开一个文件并显示它的内容
#include<stdio.h>
#include<stdlib.h> //为了使用exit()
int main(void)
{
int ch;
FILE * fp;
char fname[50];

printf("Enter the name of the file: ");
scanf("%s",fname);
fp = fopen(fname,"r");
if(fp == NULL)
{
printf("Failed to open file.Bye\n");
exit(1);
}

while((ch = getc(fp)) != EOF) //getc读取文件的字符
putchar(ch);
fclose(fp);

return 0;
}

//确认输入指的是确认用户的输入在掌握中,比如用scanf的返回值,if语句等

//菜单浏览的程序--主要练规范
#include<stdio.h>
char get_choice(void);
char get_first(void);
int get_int(void);
void count(void);

int main(void)
{
int choice;

while((choice = get_choice()) != 'q')
{
switch(choice)
{
case 'a':printf("Bye low,sell high.\n");
break;
case 'b':putchar('\a');
break;
case 'c':count();
break;
default:printf("Program error!\n");
break;
}
}
printf("Bye.\n");
getchar();
return 0;
}

char get_choice(void)
{
int ch;

printf("Enter the letter of your choice: \n");
printf("a.advice b.bell\n");
printf("c.count d.quit\n");
ch = get_first();
while((ch < 'a' || ch > 'c') && ch !='q')
{
printf("Please respond with a,b,c,or q.\n");
ch = get_first();
}
return ch;
}

//选取第一个输入的字符并且清空缓冲区
char get_first(void)
{

int ch;

ch = getchar();
while(getchar() != '\n')
continue;
return ch;
}

//打印选项c结果
void count(void)
{
int n, i;

printf("Count how far? Enter an integer:\n");
n = get_int();
for(i = 1;i <= n; i++)
printf("%d\n",i);
while(getchar()!='\n') //防止返回时影响后面函数--缓存区每清零
continue;
}

//防止随便输入
int get_int(void)
{
int input;
char ch;

while(scanf("%d",&input) != 1) //不会就一直执行
{
while((ch = getchar()) != '\n')
putchar(ch);
printf(" is not an integer.\nPlease enter an ");
printf("integer value,such as 25,-175,or 3: ");

}
return input;

}

C控制语句:分支和跳转的更多相关文章

  1. C控制语句--分支和跳转

    /*C控制语句--分支和跳转*/ /*关键字 if else switch continue break case default goto 运算符:&&(且) ||(或) ?:(三元 ...

  2. Java控制语句——分支、循环、跳转

    分支语句(if语句,switch语句): 循环语句(for,while,do...while); 跳转语句(break,continue,return): 分支语句(if语句,switch语句) if ...

  3. C Primer Plus学习笔记(六)- C 控制语句:分支和跳转

    if 语句: if 语句被称为分支语句(branching statement)或选择语句(selection statement) if 语句的通用形式: if (expression) state ...

  4. C Primer Plus 第7章 C控制语句:分支和跳转 编程练习

    作业练习 1. #include <stdio.h> int main(void) { char ch; int spare, other, n; //空格,其他字符,换行 spare = ...

  5. 第7章,c语言控制语句:分支和跳转

    7.1 if语句 通用形式:if(expression) statment 7.2 if else语句 通用形式:if(expression) startment else startment2 7. ...

  6. 【C语言学习】《C Primer Plus》第7章 C控制语句:分支与跳转

    学习总结 1.if…else…从语义上看就能出用途,跟其他语言没差多少,只需要记住,世界上最遥远的距离之一:我走if你却走else. 2.根据个人几年的编程经验,太多的if…else…嵌套会加大代码的 ...

  7. C语言之控制语言:分支和跳转

    if语句 #include<stdio.h> int main(void) { const int FREEZING = 0; float temperature; int cold_da ...

  8. IT兄弟连 Java语法教程 流程控制语句 分支结构语句5

    5  switch-case条件语句 Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择.尽管一系列嵌套if语句可以执行多路测试,然而 ...

  9. IT兄弟连 Java语法教程 流程控制语句 分支结构语句3

    3  if-else if-else条件语句 if-else if-else的完整形式如下: if(判断条件A){ A语句块(判断条件A的值为true,执行) }else if(判断条件B){ B语句 ...

随机推荐

  1. ajax_表单提交+tp5ajax

    ======================================================= 判断squery导入的是否正确? $(function(){ alert('1'); } ...

  2. dedecms_

    2012-7-5(no1)当我们点击检索结果的某个电影超链接时,如何跳转到对应的内容页[本资源由www.qinglongweb.com搜集整理] dedelist标签 --可以嵌套 项目移植: mys ...

  3. linux_ssh

    什么是ssh? 配置文件位置:/etc/ssh/sshd_config 远程登录和为其他网络提供安全的加密数据传输协议,默认端口22,默认协议是SSH2 # 远程终端通过ssh连接服务器管理服务器 # ...

  4. awk之FIELDWIDTHS字段宽度

    $ cat file 1234567890 $ awk -vFIELDWIDTHS="1 2 3 4 5" -vOFS="|" 'NF=NF' file 1|2 ...

  5. shell第四篇(下)

    摘自王垠的:Unix的缺陷 我想通过这篇文章解释一下我对 Unix 哲学本质的理解.我虽然指出 Unix 的一个设计问题,但目的并不是打击人们对 Unix 的兴趣.虽然 Unix 在基础概念上有一个挺 ...

  6. Bug等级判断标准

    测试的问题大致可分为以下几个类型:致命问题严重问题一般问题轻微问题 判断标准如下1.致命问题:造成系统崩溃.死机.死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题.如:代 ...

  7. sizeof和strlen的使用

    sizeof和strlen的使用 1. sizeof 其值在编译时就计算好了,所以不能用来返回动态分配的内存空姐的大小. 当参数为下面内容是,所表达的含义: 数组——编译时分配的数组空间大小: 指针— ...

  8. Python CRM项目八

    自定义用户认证 目的:实现Django自定义的认证系统,在生产环境都是根据此代码进行定制的 步骤: 1.在settings文件中配置要使用的类 #命名规则 app名称.类名 AUTH_USER_MOD ...

  9. JavaScript 优雅简单的拼接字符串

    前言 最近维护一个老系统,里面有大量js拼接字符串的代码,这里总计一下js拼接字符串 JS 原生字符串拼接 JavaScript里面的字符串可以直接用 + 来拼接 return "<a ...

  10. if语句中同时判断多个条件的多种方法

    总结一下自己经常用到的python中的if语句同时判断多个条件的不同方法,假设有: x, y, z = 0, 1, 0 方法一,多个逻辑运算符一起使用,这也是最常用的写法: if x == 1 or ...