当前位置:首页 » 编程语言 » 30分钟学习c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

30分钟学习c语言

发布时间: 2023-01-21 05:31:50

c语言 指针 基础问题

引用ctod函数为什么是ctod(a)而不是ctod(*a)

首先 函数定义:long ctod( char *s )

ctod的参数char *s , 为指针类型。 所以调用时采用 ctod(a)而不是ctod(*a)。


引用a代表的地址和引用*a代表的内容有什么具体区别

关于指针“a”和指针的值“*a”。

如char *a = "abcedf";

如果使用变量a,即代表"abcedf"的首地址。

如果使用变量*a, 这个值就是字符'a'。


*被成为取值运算符,就是用来取指针(指定地址)的值。

❷ C语言指针问题

输出5。即"hello"的长度。
for (q=p; *q; q++);
这个for循环,注意后边直接跟了分号。printf并不是循环内语句。
for循环的初始,让q指向了p,然后当q的值为真时,q向后移动一位。本质是让指针q遍历了字符串"hello"的每一个元素,最后停在末尾字符。
最后printf,q-p,即p、q两个指针的差,即相隔5个char型内存空间。

❸ C语言指针问题

0028FF30和0028FF20相差16个单位,一个int占4个单位,懂吗?

0028FF30和0028FF20都是16进制的,不是十进制,会算16进制吗?你可以看到前者比后者在第二位上大一,那么也就是大了16^1=16,这里的16是十进制。

❹ 在线等30分钟:c语言编程:能够输入100个学生的学号和姓名,并将。。。。。 已给出三个函数,求主函数。

//这个可以吗
#include <stdio.h>
#include <string.h>
#define N 100
struct STUDENT
{
char id[20];
char name[20];
};
typedef struct STUDENT Student;

void inputdata(Student student[],int n);
void sort(Student student[],int n);
void search(Student student[],int n);

void main()
{
Student student[N];
inputdata(student,N);
sort(student,N);
search(student,N);
}

void inputdata(Student student[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("第%d个学生n",i+1);
printf("请输入学号:");
scanf("%s",student[i].id);
printf("请输入姓名");
scanf("%s",student[i].name);
}
}
//选择排序
void sort(Student student[],int n)
{
int i,j,t;
Student temp;
for(i=0;i<n-1;i++)
{
t=i;
for(j=i+1;j<=n-1;j++)
{
if(strcmp(student[t].id,student[j].id)>0)
{
t=j;
}
}
if(t!=i)
{
temp = student[i];
student[i] = student[t];
student[t] = temp;
}
}
printf("排序后为:\n");
for(i = 0;i<N;i++)
{
printf("学号:%s\t姓名为:%s\n",student[i].id,student[i].name);
}
}
//折半查找
void search(Student student[],int n)
{
char id[20];
int high,mid,low,flag =1;
high=n-1;
low=0;
printf("请输入你要查找的学号:\n");
scanf("%s",id);
while(low<=high)
{
mid = (high +low)/2;
if(strcmp(id,student[mid].id)>0)
{
low = mid +1;
}
else if(strcmp(id,student[mid].id)<0)
{
high = high -1;
}
else
{
printf("在第%d上找到\n",mid+1);
printf("学号:%s\t姓名:%s\n",student[mid].id,student[mid].name);
flag = 0;
break;
}
}
if(flag)
{
printf("无此学号\n");
}
}

❺ C语言指针使用问题

答案没错的,是你理解错了,这里不是要把r替换为s。
重点看这段代码:
if(*p==ch)
{
*str=*p;
(*str)++;
str++;
}
这里的意思是当p指向的字符和ch相等时,将str所指向的字符变为ch,然后再++对应这里也就是先变为r然后变为s,str++表示str指向下一个字符。这里的str一开始是指向program中的p字符,然后当p指针指向r字符时,str还是指向p字符,接着str将p字符改为r,然后又++改为s。接着p指针继续向下移动,一直到第二个r,然而此时的str是指向program中的第二个元素也就是r,然后重复和之前一样的步骤变为s。最后跳出循环后,*str='\0';表示截断。
哦,还有就是你第一个程序写错了,scanf函数要的是指针,不是scanf("%c",char_c);这样的。char_c是个变量名,应该scanf("%c",&char_c);

That'all

❻ C语言指针问题

#include<stdio.h>

char *getmonth( int n );

int main()
{
int n;
char *s;

scanf("%d", &n);
s = getmonth(n);
if( s==NULL )
printf("wrong input!\n");
else
printf("%s\n", s);
return 0;
}
char *getmonth( int n )
{
switch(n)
{
case 1: return "January";
case 2: return "Febuary";
case 3: return "March";
case 4: return "April";
case 5: return "May";
case 6: return "June";
case 7: return "July";
case 8: return "August";
case 9: return "September";
case 10: return "October";
case 11: return "November";
case 12: return "December";
default: return NULL;
}
}

❼ C语言 指针问题

使用的指针函数

考虑到题中说的是小朋友学习100以内正整数的简单运算

所以考虑到了被减数 大于 减速 ,除数不为0,整除的情况

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<conio.h>

charexpression[10];
char*p=expression;
intresult;
char*GetRandomExpression();

intmain()
{
char*p1;
inti,count=1;
charch;

printf("请输入下列算式的结果: ");
while(1)
{

p1=GetRandomExpression();
printf("第%d题:%s",count,p1);
scanf("%d",&i);
if(i==result)
printf("恭喜!您答对了 ");
else
printf("抱歉!您答错了 ");

printf("是否继续?(按Y继续,其他任意键结束):");
ch=getch();
if(ch=='Y'||ch=='y')
{
printf("您选择了继续 ");
count++;
}
else
{
printf("您选择了退出 ");
break;
}
}
}

char*GetRandomExpression()
{
intnum1,num2,index;
charop[]="-+*/";

srand(time(NULL));
num1=rand()%100+1;
num2=rand()%100+1;

if(num1<num2)
index=rand()%3+1;//保证被减数大于减速
else
index=rand()%4;
switch(index)
{

case0:
result=num1-num2;
break;

case1:
result=num1+num2;
break;

case2:
result=num1*num2;
break;

case3:
while(num2==0||num1>100||num1%num2!=0)//保证除数不为0,且可以整除
{
result=rand()%100+1;
num2=rand()%100+1;
num1=num2*result;
}
break;
}
sprintf(expression,"%d%c%d=",num1,op[index],num2);

returnp;
}

❽ C语言指针问题

int grid[30][100]; 这是一个二维数组

数组名grid是整个数组的地址
也是数组第一行的地址
也是数组第一个元素的地址
而这三个地址的类型是不同的
整个数组的地址 类型 int (*)[30][100];
第一行的地址 类型 int (*)[100];
第一个元素的地址 类型 int *
所以,准确表示grid【0】【0】的地址时,应该是 (int *)grid ;