A. c語言指針自增後怎麼還原到首地址啊,求高手解~
int *origin = null;//保存最初的位置
int *p = .....//給要操作的指針賦初值,如int *p = a;
origin = p;//保存
p++/p--之類的你想做的操作
要使用p的首地址,使用origin即可
B. c語言問題
樓上說的效率也太低了吧
#include<stdio.h>
//#include<malloc.h>
#include<stdlib.h>
//#include <math.h>
void main()
{
FILE* handle;
int flen,fset,fend;
handle=fopen("c:\\test.dat","rb");
if(handle == 0)
{
printf("file can not be open!");
return;
}
else
{
fseek(handle, 0, SEEK_SET); //文件指針復位
fset = ftell(handle); //獲得文件指針
fseek(handle, 0, SEEK_END); //文件指針指向末尾
fend = ftell(handle);
flen = fend - fset ;
fseek(handle, 0, SEEK_SET); //文件指針復位,為了以後read
printf("file len is %d",flen);
fclose(handle);
}
}
在c盤創建一個test.dat文件做測試。
C. C語言程序填空問題~高分速求解~~!
第一個
#include <stdio.h>
main()
{
int a[5]={1,3,5,7,9}; /* a是int數值的數組 */
int *num[5],i,*p; /* num是指向int類型的指針型數組,p是指向int型的變數 */
int *f(int *x[],int); /* 返回指針值的f函數的聲明 */
for (i=0;i<5;i++)
{
num[i] = &a[i]; /* num的每個分量指向a的每個相應元素 */
}
p=f(num,2); /* 返回num[2]分量所指的數組a中的元素的地址 */
for ( ; p<=num[4]; p++) /* 在num[2]~num[4]地址范圍內掃描 */
{
printf(" %d\t", *p); /* 輸出該地址范圍內的數據 */
}
}
int *f(int *x[],int i)
{
int k=0;
for (; k<i; k++) ; /* 如果這個語句省略,需要修改什麼? */
return x[k]; /* 返回num[i]的所指的地址 */
}
第二個
#include "stdio.h"
#define N 10
main()
{
int i,k,a[N],sum,count,*p; /* 所有變數和數組a的基類型都是int */
count=sum=0;
do
{
printf(" input k: \n");
scanf("%d",&k); /* 總共要求輸入k個數 */
}
while (k<=0||k>N); /* 直到型循環確保0≤k≤N */
printf(" input a[0]~a[%d]:\n",k-1);
for (p=a;p<a+k;p++) /* 指針p指向數組a的首地址,p依次求出後繼值 */
{
scanf("%d", p); /* 此處的p等價於&a[i] */
if (*p > 0) /* 引用指針變數p所指變數的值 */
{
sum += *p; /* 指針p所指變數*p的值>0者相加 */
count++; /* 正整數個數統計 */
}
}
p = a; /* 指針復位,重新指向數組a 的首地址 */
while (p<a+k)
{
printf("%-5d", *p++); /* 先執行*p,取出所指變數的值,再指向數組的下一元素 */
}
printf("\n Numberof above >0 is : %d\n",count);
printf(" Sum of >0 is : %d\n",sum);
}
D. C語言編程實踐-求解求解求解!!!!!!
不知道為什麼沒有代碼模式,只能這樣復制給你了。也不知道你的T跟R字元串多少個字元,能不能用字元串庫函數,程序里就假設它們相等了,沒用到字元串庫函數。
#include<stdio.h>
char str_compare(char *p1,char *p2);
void str_change(char *p1,char *p2);
char *p=0;
int main()
{
char SS[]="China American Russian Japan England Japan American",TT[]="American",RR[]="12345678";
char *ps=SS,*pt=TT,*pr=RR;
printf("原來字元串:");
for(;*ps!='