當前位置:首頁 » 編程語言 » 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 ;