當前位置:首頁 » 編程語言 » c語言指針筆試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言指針筆試題

發布時間: 2022-03-12 23:38:38

c語言指針編程題

int astrcat(char *t,char *s){
if(t==NULL || s==NULL)
return -1;
int i, j;
char *pt =t, *ps = s;
while(*pt++ != '\0');
while(*ps != '\0'){
if(*ps >='A' && *ps <='Z'){
*pt = *ps;
}
ps++;
}
*pt = '\0';
return 0;
}

⑵ c語言選擇題(指針)

答案是A,首先定義p是一個指向int類型的指針,不過這個指針沒有初始化,也就是沒有指向。然後定義了一個int類型的變數i,這里千萬不要認為i也是個指針,如果i跟p一樣,要在前面也加個*號。
然後分析答案: A,這里對p指向的變數進行賦值,這里是相當於初始化了。所以正確。
B,不正確/不合理,因為p的地址不確定,所以給i賦值賦的是地址值,這個地址本身就不確定,賦值沒有意義,認為是不合理的。
C,不正確,因為p指向的位置未知,這里不能對p進行解引用取值,所以這個答案可以馬上排除。
D,也不正確,這里p是個地址,沒有對地址進行乘法和加法的運算,所以這個答案也可以馬上排除。

⑶ C語言 指針題

A.*S1++=*S2++ 先賦值,再移動兩個指針

B.S1[n-1]=S2[n-1]
C.*(S1+n-1)=*(S2+n-1) B C是一樣的,兩種不同的寫法

D.*(++S1)=*(++S2) 前++,導致先移動指針,再賦值,這樣,會丟掉第一個字元,所以是錯的!

⑷ C語言指針簡單的編程題

intmain()
{
doublea[20];
doubleresult=0.0;
inti=0;
doublefact=3.2;
doubleval=1.5;

double*ptrDouble=&a[0];
//輸出所有數組值
for(i=0;i<20;i++)
{
*(ptrDouble+i)=i*fact+val;
printf("%f",*(ptrDouble+i));
}
ptrDouble=&a[10];

//輸出後是個值
for(i=0;i<10;i++)
{
result=result+*(ptrDouble+i);
}
printf("%f",result);

};

⑸ C語言指針題

iostream>
using namespace std;
void fun(int a[],int n,int m)
{
int i;
if(n<=m)
{
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
else
{
for(i=n-m;i<n;i++)
cout<<a[i]<<" ";
for(i=0;i<n-m;i++)
cout<<a[i]<<" ";
cout<<endl;
}
}
void main()
{
int i,k,l,a[100];
i=0;
cout<<"請輸入數據並以ctrl+a結束:"<<endl;
while(cin>>k)
{
a[i]=k;
i++;
}
cin.clear();
cin.sync();
l=i;
cout<<"請輸入要移動的位數:"<<endl;
cin>>k;
cout<<"運算結果為:"<<endl;
fun(a,l,k);
}
有不明白的再聯系我。
另外,站長團上有產品團購,便宜有保證

⑹ C語言指針試題

#include<stdio.h>
void main()
{
float a[22],*p,*q,t;
int i;
for(i=0;i<20;i++)
{
scanf("%f",&a[i]);
}
for(p=a;*p!='\0';p++)
{
for(q=p;*q!='\0';q++)
{
if(*q<*(q+1))
{
t=*q;
*q=*(q+1);
*(q+1)=t;
}
}
}
for(i=0,p=a;i<20;i++,p++)
printf("%f",*p);
printf("\n");

}

⑺ C語言編寫指針試題

下面程序我沒時間調試,你自己調試一下:

#include <iostream>

int main()
{
int upper = 0,
lower = 0,
digit = 0,
space = 0,
other = 0,
i = 0;
char* p;
char s[20];

std::cout<<"Input string: ";

while ((s[i] = std::cin.get()) != '\n')
{
i++;
}
p = &s[0];
while (*p != '\n')
{
if (('A' <= *p) && (*p <= 'Z'))
{
++upper;
}
else if (('a' <= *p) && (*p <= 'z'))
{
++lower;
}
else if (' ' == *p)
{
++space;
}
else if ((*p <= '9') && (*p >= '0'))
{
++digit;
}
else
{
++other;
}
p++;
}
std::cout<<"upper case: "<<upper<<std::endl;
std::cout<<"lower case: "<<lower<<std::endl;
std::cout<<"space: "<<space<<std::endl;
std::cout<<"digit: "<<digit<<std::endl;
std::cout<<"other: "<<other<<std::endl;

return EXIT_SUCCESS;
}

⑻ 有趣的筆試題(關於C語言字元數組和字元指針)

這兩個都存在錯誤
先說不報錯的情況:第1個程序開設了長度為12的數組,並且在進入函數時初始化成了那個字元串。這時修改這個數組是ok的,但返回的指針的前提是被廢棄的p數組內容還沒被別的函數沖掉。一般不要返回函數自己定義的變數地址、數組,可以返回它們的值(只能一個),否則這個數組會在函數結束運行時被舍棄,普通這個數組可以從調用者那裡申請並將指針傳進來。
程序2錯誤的原因是,p只是一個指針變數,它沒有空間來存儲字元串,p被賦值成字元串首地址,但這個字元串是位於整個程序的常量區(例1在函數初始化時有個將常量區字元串復制到數組p的過程),而常量區是受保護的,只讀,試圖改變p指針指向的內容時會報錯,這個錯就是試圖修改常量類型的數據。而這個程序返回的p值,因為是指向常量區的,調用者是可以使用的,這個區域不存在失效問題。

⑼ 一個經典的c語言指針問題題目

for(p+m-1;p<a+n;p++)

其中的p+m-1並不改變p的值,所以p仍然指向a[0],因此,多加了a[0]和a[1]