① c语言如何输出指针所指向的值
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
② C语言菜鸟:如何用指针生成回文数组
所谓回文数组,就是从高到底和从低到高遍历,得到的是相同序列。该数组具有对称性。
如果一个数组不是回文数组,可以把对称位置上值不相等的元素修改为相等,来生成回文数组。
用指针可以按照如下思路:
1 定义两个指针head和end,head指向数组头,end指向数组尾。
2 比较两个指针指向的值,如果不相等,则令其相等。
3 移动指针,head向后,end向前,即两头向中间凑。
4 重复执行2-3步,直到两个指针相等或者end在head前(end <= head),结束循环。
5 得到的数组即为回文数组。
参考代码如下:
#include<stdio.h>
intmain()
{
inta[5]={1,2,4,3,1};//原始数组,不是回文数组。
inti;
int*head,*end;//定义两个指针。
head=a;//head指向头。
end=&a[4];//end指向尾。
while(head>end)//循环条件设置为head>end,即当end<=head时退出循环。
{
if(*head!=*end)*end=*head;//如果不等,则使其相等。
}
for(i=0;i<5;i++)//输出结果
printf("%d",a[i]);
return0;
}
执行后的结果为:
1 2 4 2 1
已经是回文数组了。
③ C语言:生成20个学号姓名和5门成绩的结构体数组,不动其数据,用指针数组按平均成绩由高至低排序,咋写
(感觉略有难度) 题目没有要求计算和输出平均值,所以排序可以不求平均值而按五门总分进行,效果与求出平均分是一样的——
代码文本:
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#include "time.h"
#define N 20
struct stu{
int s[5];
char SN[9],NAME[6];
};
int main(int argc,char *argv[]){
int i,j,k;
struct stu A[N],*p[N],*q;
srand((unsigned)time(NULL));
for(i=0;i<N;i++){//随机生成学生信息
do{//随机生成8位学号且不重复
itoa(10000+rand()%10000,A[i].SN,10);
strcpy(A[i].SN,A[i].SN+1);
itoa(1000+rand()%1000,A[i].SN+4,10);
for(j=0;j<i;j++)
if(strcmp(A[i].SN,A[j].SN)==0)
break;
}while(j<i);
A[i].NAME[0]='S',A[i].NAME[1]='T',A[i].NAME[2]='U';
A[i].NAME[3]=(i+1)/10+'0',A[i].NAME[4]=(i+1)%10+'0';
A[i].NAME[5]='