一. 在if进行判断的时候,()中间一定是“==”,这个是判断,如果是“=”是赋值;
并且在判断一些符号的时候要加单引号‘’。
if(c=='*');//这里必须加单引号,再比如里面是一个字母x,表示这个变量x,若为'x'表示字母x。
二 关于ASCII的一些用法
数字是48-57的对应【0-9】
小写字母是97-122,大写是65-90,然后小写换大写就ascll加上32。例如
#include <stdio.h>
int main(){
char x='a',x1='1',x2=2;//单个字符一定要加单引号。
printf("%c %c %c",x-32,x1,x2);//这里打印的结果是大写的A和1。2不会被打印出来。
}
可以直接对一个char类型的变量进行加减,或者比较,这样的话都是比较的ascii码。
#include <stdio.h>
int main(){
char x1='1',x2='2';
printf("%c",x1+x2);//这里打印出来的是小写的c(99),49+50==99.
for(int i=0;i<99;i++){
if(i==x1){
printf("%d",i);//在这里会打印49,因为x1的ascll为49.
}
}
}
三关于变量初始化的问题
这是一个pta的函数题,就奇奇怪怪的弄了一晚上。
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );//这个函数需要判断进入的N是否为完全平方数,并且N里面有相同的数字【144这种】
int main()//这一个主函数都可以不看,主要看下面
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt);
return 0;
}
int IsTheNumber ( const int N )
{
int n,a[10],i=0,j,flag=1,m=N;//重点在这里,注意这里的n没有被初始化,所以每次进入这个函数的时候,n都是一个随机值。
if((int)sqrt(m)==sqrt(m))//当m为完全平方数的时候就进来,
{
while(m!=0)
{
a[i]=m%10;
m=m/10;
i++;
n=i;//倘若能进来,n就可以被赋予i的值。
}
}
//但是注意,就算m不是一个完全平方数,依然会进行下面的一系列操作,意思是n没有被赋予i的值,是以一个随机值来进行下面操作。
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[j]==a[i])
{
return 1;
}
}
//所以这样写的代码是错误的,可以在whlie循环里面增添一个flag判断语句,倘若m是完全平方数,flag=1,然后在出循环判断flag 。
四
#include <stdio.h>
#include <stdlib.h>
int main(){
int *p;
p=(int *)malloc(sizeof(int));
int *i;
i=p;
printf("%p %p",p,i);
}
这里打印出来的地址是一样的