当前位置:首页 » 编程语言 » 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]