#include <stdio.h>
int main()
{
xxx;
return 0;
}
本课中所有的程序都需要这一段,直到学函数之前,我们的代码都只是在这个框架中间,也就是xxx的位置。
? 做事情的句子之后必须有分号,不过换行无所谓,在C里面,换行/空格不代表任何。
printf("%d",12+34);
printf("12+34=%d",12+34)
#%d 说明后面有一个整数要输出在这个位置上
int price;
int amount;
int price,amount;
scanf("%d",&price)
const int AMOUT=100; #后期不能被赋值修改
int price=0;
int change=AMOUNT-price;
条件判断
if(im<0){
im+=60;
ih--;
}else{
xxx
}
if(im<0)
im+=60;
else
xxx;
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int max=0;
if(a>b){
if(a>c){
max=a
}else{
max=c
}
}else{
if(b>c){
max=b
}else{
max=c
}
}
printf("The max is %d\n",max);
我有一个问题:为什么print f那个引号里面最后的地方要加个\n呢??都有什么句子必须加呢??
switch(type)
{
case 1:
case 2:
printf("hhh\n");
break;
case 3:
printf("ggg\n");
case 4:
printf("kkk\n");
break;
default:
printf("a\n");
break;
}
循环
int x;
int n=0;
scanf("%d",&x);
n++;
x/=10;
while(x>0){
n++;
x/=10;
}
printf("%d\n",n);
int x;
int n=0;
scanf("%d",&x);
do{
x/=10;
n++;
}while(x>0);
printf("%d\n",n);
int count=1;
int i;
for(i=10;i>1;i--){
count*=i;
}
int i;
while(i>1){
count*=i;
i--;
}
int n=10;
int i;
for(i=n;i>1;i--){
count*=i;
}
int n=10;
for(n=n;n>1;n--){
count*=n;
}
int n=10;
for(;n>1;n--){
count*=n;
}
for(;条件;){} == while(条件){}
· 三种循环对比:
如果有固定次数,用for循环;
如果必须执行一次,用do-while循环;
其他情况用while循环。
break continue
exit=1;
break;
}
}
if(exit=1) break;
int main()
{
xxx
goto out;
}
}
}
out:
return 0;
}
? 有的时候,上一步的结果可以通过给一个新变量赋值,再通过新变量值的判断输出结果的方式来进行,并且有的时候,这种方式,比其他的一些比较大小要优越一点。
if(cnt%5==0){
printf("\n");
}
printf("%d\t",x);
这个\t使它对齐
int main()
{
int x;
scanf("%d",&x);
int mask=1;
int t=x;
while(t>=10){
t/=10;
mask*=10;
}
while(mask>0){
a=x/mask;
x=x%mask;
mask/=10;
printf("%d",a);
if(mask>0){
printf(" ");
}
}
return 0;
}
? 现在的问题就是,奥,我了解这个语法了,但是我做的题少,用起来还是很不熟悉,还是有可能在一些条件设置上犯错误,或者是选择了不太合适的语法。就是还要多练,多做题,这一遍过去之后回来一定要多做题练习熟练一点。
? ·关于do-while和while,前者虽然是在后面判断,但是它影响的是会不会进行下一次循环,所以它并不是使它可以后验,超出了这个要求就取消本次循环;恰恰相反,它还是必须要做一次的,还不如while。由于并没有后判断再取消操作的这种函数,所以只能是修改条件,把前置条件等价转化成若它在后置条件为此的时候所等价对应的前置条件,便如上所示,把 t>0 修改为 t>=10。
#include <studio.h>
int main()
{
int a,b;
int t;
scanf("&d &d",&a,&b);
do{
if(b=0){
printf("gcd=%d",a);
}
else{
t=b;
b=a%b;
a=t;
}
}while(b!=0);
return 0;
}
int a,b,c,d;
scanf("%d",&a);
b=a+1;
c=a+2;
d=a+3;
? 计算机为什么不能利用我们的方法枚举——因为它不能记忆上一个,还要去比对,看是不是重复,这个条件判断就很离谱,所以我们只能使用更适合计算机的也就是更普适的方法——递归。
int a;
scanf("%d",&a);
int i,j,k;
int cnt=0;
i=a;
j=a;
k=a;
while(i<=a+3){
while(j<=a+3){
while(k<=a+3){
if(i!=j){
if(i!=k){
if(j!=k){
printf("%d%d%d",i,j,k);
cnt++;
if(cnt%6=0){
print("\n");
}else{
print(" ");
}
}
}
k++;
}
j++;
}
i++;
}
}
我觉得不对劲啊…有点质疑这个答案
??是我对while的特性掌握不清还是对if的特性掌握不清?刚才读到了这句指令,但由于当时不符合条件而跳过了这句指令,之后因为操作使得条件符合了,就会去执行刚才那个指令吗??
? 一开始没做出来主要是因为思路跑偏了,被上一个例题带的,一直想一位数一位数的处理,至于每个用哪个方法我还没完全想清楚,再往后学学再回来考虑吧。
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i;
int cnt=0;
int sum=0;
if(m==1){
m=2;
}
for(i=m;i<=n;i++){
int isprime=1;
int k;
for(k=2;k<=n;k++){
if(i%k==0){
isprime=0;
break;
}
}
if(isprime=1){
cnt++;
sum+=i;
}
}
printf("%d %d",cnt,sum);
return 0;
}
int a,b;
scanf("%d/%d",&a,&b);
int m=0;
int n=1;
int t=1;
while(t>0){
m=b;
b=a%b;
t=a/b;
a=m;
if(a%b=0){
n=b;
}
}
if(m=0){
printf("分母不能为0!");
}
printf("%d/%d\n",a/n,b/n);
int a;
scanf("%d",&a);
int m=a;
int n=a;
int count=0;
int i;
if(a=0){
printf("ling");
}
while(m!=0){
m=m/10;
count++;
}
for(i=1;i<=count;i++){
int j=1;
j*=10;
}
int b=1;
int k;
while(j>=1){
k=n/j;
if(k<0){
printf("fu");
printf(" ");
k=-k;
if(k=1){
printf("yi");
}else if(k=2){
printf("er");
}else if(k=3){
printf("san");
}else if(k=4){
printf("si");
}else if(k=5){
printf("wu");
}else if(k=6){
printf("liu");
}else if(k=7){
printf("qi");
}else if(k=8){
printf("ba");
}else if(k=9){
printf("jiu");
}else if(k=0){
printf("ling");
}
}else if(k>0){
if(k=1){
printf("yi");
}else if(k=2){
printf("er");
}else if(k=3){
printf("san");
}else if(k=4){
printf("si");
}else if(k=5){
printf("wu");
}else if(k=6){
printf("liu");
}else if(k=7){
printf("qi");
}else if(k=8){
printf("ba");
}else if(k=9){
printf("jiu");
}else if(k=0){
printf("ling");
}
}
n=n%j;
j/=10;
}
int a,n;
scanf("%d %d",&a,&n);
int i;
int sum1=0;
int sum2=0;
int j=1;
int k=1;
for(i=1;i<=n;i++){
sum1+=2*j;
sum2+=sum1;
for(;k<=i;k++){
j*=10;
}
}
printf("%d\n",sum2);
? 务必要整理基本模型!!!比如素数、最大公约数、从左到右逐个输出、从右到左逐个输出等。
sizeof()
char
short
int
long
long long
数组
const int num=10;
int array[num];
int i;
int x;
for(i=0;i<=num;i++){
array[i]=0;
}
scanf("%d",&x);
while(x!=-1){
if(x>=0&&x<=9){
array[x]++;
}
scanf("%d",&x);
}
for(i=0;i<num;i++){
printf("%d:%d\n",i,array[i]);
}
int a[]={1,2,3,4,5,6,7};
int a[13]={2,4,6}
int a[10]={
[0]=2,[2]=3,6,
}
sizeof(a)/sizeof(a[0])
int i;
int isprime(i);
int main(){
for(i=2;i<=20;i++){
if(isprime(i)){
printf("%d\n",i)
}
}
return 0;
}
int isprime(i){
int t;
isprime=1;
for(t=2;t<=sqrt(i);t++){
if(i%t=0){
isprime=0;
break;
}
}
return isprime;
}
int primes[20]={2};
int length=1;
const int max=20;
int i;
int addprime(i,primes[],length);
int main(){
for(i=3;i<=20;i+=2){
addprime(i,primes[],length)
}
return 0;
}
int addprime(i,primes[],length){
int t;
for(t=2;t<=sqrt(i);t++){
if(i%t==0){
break;
}else{
primes[length++]=i;
}
}
}
int i;
int primes[length]={2};
int length=20;
int cnt=1;
int isprime(int i,int primes[],int length);
int main(){
for(i=2;i<length;i++){
if(isprime(i,primes[],length)){
primes[cnt++]=i;
}
}
for(i=0;i<length;i++){
printf("%d",primes[i]);
if((i+1)%5==0){
printf("\t");
}else{
printf("\n");
}
}
return 0;
}
int isprime(int i,int primes[],int length){
ret=1;
int x;
for(x=0;x<length;x++){
if(i%primes[x]==0){
ret=0;
break;
}
}
return ret;
}
int i;
int isprime(i);
int sum=0;
const int max=20;
int array[max];
int main(){
for(i=0;i<max;i++){
array[i]=1;
}
for(i=2;sum<=20;i++){
isprime(i);
sum++;
}
printf("%d\n",array);
}
int isprime(i){
int t;
for(t=2;t<sqrt(i);t++){
if(i%t==0){
array[i]=0;
break;
}else{
int x;
for(x=2;x*i<20;x++){
array[i]=0;
}
}
}
}
int main(){
int i;
int array[max];
const int max=20;
for(i=0;i<max;i++){
array[i]=1;
}
int i;
int array[i];
const int max=20;
for(i=0;i<max;i++){
array[i]=1;
}
for(i=2;i<max;i++){
if(array[i]){
int x;
for(x=2;x*i<sum;x++){
array[x*i]=0;
}
}
}
for(i=2;i<max;i++){
if(array[i]){
printf("%d\n",i);
}
}
return 0;
}
· 切记,一定不要只顾着赶进度,每一个章节对应的题都要认认真真再自己做一遍,看懂不等于理解,更不等于会做,一定要自己全部敲一遍,并且把老师所写代码的思想吃透!!
· 我这个犯错的思想其实有点受之前学python的影响,我觉得,把更多的东西封装进函数里,主函数越简洁越好,但这对于我目前学到的C语言的部分来说是不合理的,因为你的函数目前只是可以return一个值而已,并不能去修改你原本有的值。
|