c语言笔试题
1????Ò??ö×Ö?û??ÄæÐò
void reverse(char *s) {
char ch,*p1=s,*p2=s;
int size;
size = strlen(s);
p2=s+size-1;
while(p2 > p1)
{
ch=*p1;
*p1=*p2;
*p2=ch;
p1++;
p2--;
}
}
2????Ò??öÁ??íÄæÐò
struct node *reverse(struct node *head)
{
struct node *p, *q, *r;
if(head == NULL || head->next == NULL)
return head;
p=head->next;
q=p->next;
p->next=NULL;
while(q)
{
r=q;
q=q->next;
head->next=r;
r->next=p;
p=r;
}
return head;
}
3???ÆËãÒ??ö×Ö?ÚÀï??byte??ÀïÃæÓÐ?àÉÙbit??ÖÃ1
int count_ones(unsigned a) {
int count = 0;
while(a)
{
if(a & 1)
count++;
a >>= 1;
}
return count;
}
4???àÐ?Ò??ö C
º?Êý???ú?ÊýÔÚÒ??ö×Ö?û??ÖÐÕÒµ??ÉÄܵÄ×î??µÄ×Ó×Ö?û????ÇÒ?Ã×Ö?û??ÊÇÓÉ
Í?Ò?×Ö?û×é?ɵÄ??
char * search(char *cpSource, char ch) {
char *cpTemp=NULL, *cpDest=NULL;
int iTemp, iCount=0;
while(*cpSource)
{
if(*cpSource == ch)
{
iTemp = 0;
cpTemp = cpSource;
while(*cpSource == ch)
{
++iTemp;
++cpSource;
}
if(iTemp > iCount)
{
iCount = iTemp;
cpDest = cpTemp;
}
if(!*cpSource)
break;
}
++cpSource;
}
return cpDest;
}
5???ÓÒ??ö?ø??µÄ×Ö?û??ÖÐÕÒ?öÄ?Ò?×Ó×Ö?û??µÄÎ?ÖÃ???Ó1?ªÊ?????Èô×Ö?û??
ÖÐÃ?ÓÐÖ???µÄ×Ó????Ôò?ê?ÇΪ0.
//"efg"ÔÚ×Ö?û??"abcdefghijk"ÖÐÎ?×ÓΪ5 #include
int indexOf(char *sub, char *source) {
int ret;
int i, j = 0;
for(i = 0; source[i] != '\0' && sub[j] != '\0'; i++)
{
if(source[i] == sub[j])
{
if(j == 0)
ret = i + 1;
j++;
}
else
{
ret = 0;
j = 0;
}
}
if(sub[j] == '\0')
return ret;
else
return 0;
}
int main()
{
printf("%d\n",indexOf("defg","abcdefghijk"));
return 0;
}
6???Ñ×Ö?û??ת???ÉÕûÊý
//ÊäÈëÒ??ö?íÊ?ÕûÊýµÄ×Ö?û?????Ñ?Ã×Ö?û??ת???ÉÕûÊý??Êä?ö??ÀýÈçÊäÈë×Ö
?û??"345"??ÔòÊä?öÕûÊý345??
#include
int atoi(char *s) {
int num = 0, temp;
int negative = 0;
if(s == NULL)
return 0;
if(*s == '+' || *s == ' ')
{
s++;
if(*s == '\0')
return 0;
}
if(*s == '-')
{
s++;
negative = 1;
if(*s == '\0')
return 0;
}
while(*s)
{
temp = *s - '0';
s++;
if(temp >= 0 && temp <= 9)
num = num * 10 + temp;
else
return 0;
}
if(negative)
num = 0 - num;
return num;
}
int main()
{
char s[] = "1234";
int num;
num = atoi(s);
if(num)
printf("%d\n", num);
else
printf("invalid input!\n");
return 0;
}
7??ÕûÊýת??Ϊ×Ö?û??
#include
void long2string(long num, char *s)
{
int i = 0, j = 0;
char chtemp;
int negative = 0;
if(num < 0)
{
s[i++] = '-';
j = 1;
num = 0 - num;
}
while(num)
{
s[i++] = '0' + num % 10;
num /= 10;
}
s[i] = '\0';
for(i--; i > j; j++, i--)
{
chtemp = s[j];
s[j] = s[i];
s[i] = chtemp;
}
}
int main()
{
char s[50];
long2string(-12345, s);
printf("%s\n", s);
return 0;
}
8????ÓÃ?ý??(????ÄÜÊ?ÓÃ"/"ºÅ)ºÍ?âº?Êý,?ÆËã285 / 16µÄÉ̺ÍÓàÊý,
ÒªÇóÐ?ÂÊ??Á??ß.
int main(int argc, char* argv[]) {
int a =285;
unsigned int k,n=0;
n=a>>4;
k=a-(n<<4);
printf("%d %d",n,k);
return 0;
}
9???àÐ?×Ö?û????תº?Êý:strrev char * my_strrev(char *str)
{
char *right = str;
char *left = str;
char ch;
while (*right) right++;
right--;
while (left < right)
{
ch = *left;
*left++ = *right;
*right-- = ch;
}
return(str);
}
10???àÐ?×Ö?û????תº?Êý:strrev
º?ÊýÔ,ÐÍΪ:
char* strrev(char* dest, char* src);
ÌáÊ?:destºÍsrc?ÉÄÜÊÇÍ?Ò??ö×Ö?û??.
#include
void str_reverse(char *dest, char *source)
{
char c;
dest = source;
while(*dest) dest++;
dest--;
while(source < dest)
{
c = *dest;
*dest = *source;
*source = c;
dest--;
source++;
}
}
int main()
{
char str[] = "I love the girl!";
str_reverse(str, str);
puts(str);
return 0;
}
11??Í?ÉÏ??mycode??
#include
#include
#include
char *str_reverse(char *dest, char *source)
{
char *temp;
int size, i = 0;
size = strlen(source);
temp = (char *)malloc(size + 1);
for(i = size - 1; i >= 0; i--)
{
*(temp + i) = *source++;
}
for(i = size - 1; i >= 0; i--)
{
*(dest + i) = *(temp + i);
}
*(dest + size) = '\0';
free(temp);
return dest;
}
int main()
{
char str[] = "I love the girl!";
char str1[50];
str_reverse(str1, str);
puts(str1);
return 0;
}
12???ìËÙÅÅÐòËã??
#include
int partion(int *s, int low, int high)
{
int temp;
temp = s[low];
while(low < high)
{
while(low < high && s[high] >= temp)
high--;
s[low] = s[high];
while(low < high && s[low] <= temp)
low++;
s[high] = s[low];
}
s[low] = temp;
return low;
}
void qsort(int *s, int low, int high)
{
int pivot;
if(low < high)
{
pivot = partion(s, low, high);
qsort(s, low, pivot - 1);
qsort(s, pivot + 1, high);
}
}
int main()
{
int i;
int s[10] = {9,40,18,36,20,25,15,3,30,11};
for(i = 0; i < 10; i++)
printf("%d\t", s[i]);
printf("\n");
qsort(s,0,9);
for(i = 0; i < 10; i++)
printf("%d\t", s[i]);
printf("\n");
return 0;
}
13???Ä?øµÄÃ?ÅÝÅÅÐòËã?? void sort(int *s, int n) {
int i, j;
int temp;
int flag = 1;
for(i = n - 2;i >= 0; i--)
{
for(j = n-1; j >= n-i-1; j--)
{
if(s[j] < s[j - 1])
{
temp = s[j];
s[j] = s[j - 1];
s[j - 1] = temp;
flag = 0;
}
}
if(flag)
break;
flag = 1;
}
}
14???àÐ?º?Êý strcpy
char *strcpy(char *dest, const char *src) {
char *s = dest;
if(dest == NULL || src == NULL)
return NULL;
while((*s++ = *src++) != '\0');
return dest;
}
15???àÐ?º?Êý memcpy
void *memcpy(void *memTo, const void *tempFrom, size_t n) {
assert((memTo != NULL) && (memFrom != NULL)); //memToºÍmemFrom?ØÐëÓÐÐ? tempFrom = (char *)memFrom;
//???æmemFromÊ×µØÖ?
tempTo = (char *)memTo; //???æmemToÊ×µØÖ? while(size -- > 0)
//Ñ,??size?Î????ÖÆmemFromµÄÖµµ?memToÖÐ *tempTo++ =
*tempFrom++ ;
return memTo;14
}
16???þ?Ö?éÕÒËã??
1)?ǵÝ?é????ʵÏÖ
int search(int a[], int key, int n)
{
int low, high, mid;
low = 0;
high = n-1;
while(low <= high)
{
mid = (low + high) / 2;
if(a[mid] == key)
return mid;
else if (a[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return -1;
}
2) µÝ?é????ʵÏÖ
int search(int a[], int key, int low, int high) {
int mid;
if(low > high) return -1;
mid = (low + high) / 2;
if(a[mid] == key)
return mid;
else if(a[mid] < key)
return search(a, key, mid + 1, high);
else
return search(a, key, low, mid - 1);
}
17???ø?ÌÓëÏß?̵ÄÇø?ð
Ïß?ÌÊÇÖ??ø?ÌÄÚµÄÒ??öÖ?Ðе?Ôª,Ò?ÊÇ?ø?ÌÄÚµÄ?ɵ??ÈʵÌå. Óë?ø?̵ÄÇø?ð:
(1)µØÖ??Õ?ä:?ø?ÌÄÚµÄÒ??öÖ?Ðе?Ôª;?ø?ÌÖÁÉÙÓÐÒ??öÏß?Ì;ËüÃÇ??Ïí?ø?̵Ä
µØÖ??Õ?ä;?ø?ø?ÌÓÐ×Ô?º?ÀÁ?µÄµØÖ??Õ?ä;
(2)×ÊÔ?ÓµÓÐ:?ø?ÌÊÇ×ÊÔ??ÖÅäºÍÓµÓеĵ?Î?,Í?Ò??ö?ø?ÌÄÚµÄÏß?Ì??Ïí?ø?̵
Ä×ÊÔ?
(3)Ïß?ÌÊÇ??ÀíÆ?µ??ȵÄ?ù??µ?Î?,µ??ø?Ì??ÊÇ.
?ø?ÌÊÇ?ßÓÐÒ????ÀÁ???ÄܵÄ?ÌÐò?ØÓÚÄ??öÊý?Ý??ºÏÉϵÄÒ??ÎÔËÐÐ?î??,?ø?ÌÊ
ÇϵÍ??øÐÐ×ÊÔ??ÖÅäºÍµ??ȵÄÒ??ö?ÀÁ?µ?Î?.
Ïß?ÌÊÇ?ø?̵ÄÒ??öʵÌå,ÊÇCPUµ??ȺÍ?ÖÅɵÄ?ù??µ?Î?,ËüÊÇ?È?ø?Ì?üÐ?µÄÄÜ?
ÀÁ?ÔËÐеÄ?ù??µ?Î?.Ïß?Ì×Ô?º?ù??ÉÏ??ÓµÓÐϵÍ?×ÊÔ?,Ö?ÓµÓÐÒ?µãÔÚÔËÐÐÖÐ?
Ø???ÉÉÙµÄ×ÊÔ?(Èç?ÌÐò?ÆÊýÆ?,Ò?×é?Ä?æÆ?ºÍÕ?),µ?ÊÇËü?ÉÓëÍ?ÊôÒ??ö?ø?̵
ÄÆäËûµÄÏß?Ì??Ïí?ø?ÌËùÓµÓеÄÈ???×ÊÔ?.
Ò??öÏß?Ì?ÉÒÔ????ºÍ??ÏúÁíÒ??öÏß?Ì;Í?Ò??ö?ø?ÌÖеÄ?à?öÏß?ÌÖ??ä?ÉÒÔ???
?Ö?ÐÐ
18??
?ÁÎÄ?þfile1.txtµÄÄÚÈÝ??ÀýÈç???º 12
34
56
Êä?öµ?file2.txt?º
56
34
12
??ÄæÐò??
#include
#include
int main()
{
int max = 10;
int *a = (int *)malloc(max * sizeof(int));
int *b;
int i = 0;
FILE *fp1, *fp2;
fp1 = fopen("f:/a.txt", "r");
if(fp1 == NULL)
{
printf("error1!\n");
exit(-1);
}
fp2 = fopen("f:/b.txt", "w");
if(fp2 == NULL)
{
printf("error1!\n");
exit(-1);
}
while(fscanf(fp1, "%d", &a[i]) != EOF)
{
i++;
if(i > max)
{
max = max * 2;
b = (int *)realloc(a, max * sizeof(int));
if(b == NULL)
{
printf("error3!\n");
exit(-1);
}
a = b;
}
}
for(i--; i >= 0; i--)
{
fprintf(fp2, "%d\n", a[i]);
}
fclose(fp1);
fclose(fp2);
free(a);
return 0;
}
19??a.txtÖÐ×Ö?û??ÄæÐòÊä?öµ?b.txtÖÐ #include
int main(int argc, char *argv[]) {
FILE *fr = NULL;
FILE *fw = NULL;
char buf[1024];
int i = 0;
fr = fopen("f:/a.txt", "rb");
fw = fopen("f:/b.txt", "wb");
while((buf[i] = fgetc(fr)) != EOF) i++;
for(i--; i >= 0; i--)
fputc(buf[i], fw);
fclose(fr);
fclose(fw);
return 0;
}
20??ÒÑÖªÁ??öÁ??íhead1 ºÍhead2 ??×ÔÓÐÐò??Çë?ÑËüÃǺÏ???ÉÒ??öÁ??íÒÀÈ?ÓÐÐò??(??ÁôËùÓÐ?áµã?????ã?óÐ?Ï
àÍ???
struct node
{
int data;
struct node *next; };
typedef struct node Node;
Node *merge(Node *head1, Node *head2)
{
Node *p1 = NULL;
Node *p2 = NULL;
Node *head = NULL;
Node *pcurrent = NULL;
if(head1 == NULL)
return head2;
if(head2 == NULL)
return head1;
if(head1->data < head2->data)
{
head = head1;
p1 = head1->next;
p2 = head2;
}
else
{
head = head2;
p1 = head1;
p2 = head2->next;
}
pcurrent = head;
while(p1 != NULL && p2 != NULL)
{
if(p1->data < p2->data)
{
pcurrent->next = p1;
pcurrent = p1;
p1 = p1->next;
}
else
{
pcurrent->data = p2;
pcurrent = p2;
p2 = p2->next;
}
}
if(p1 = NULL)
pcurrent->next = p2;
if(p2 = NULL)
pcurrent->next = p1;
return head;
}
21??µ?Ñ,??Á??í??Ã?ÊýÈýÉ?È?Ò??ö?Úµã
#include
#include
struct node
{
int data;
struct node *next; };
typedef struct node Node;
Node *creat_list(Node *h) {
Node *p, *q;
int i;
h = (Node *)malloc(sizeof(Node));
h->data = 0;
q = h;
for(i = 1; i < 1000; i++)
{
p = (Node *)malloc(sizeof(Node));
p->data = i;
p->next = NULL;
q->next = p;
q = p;
}
p->next = h;
return h;
}
Node *del_per3(Node *h) {
Node *q;
while(h->next != h)
{
q = h->next->next;
h->next->next = h->next->next->next;
h = h->next->next;
free(q);
}
return h;
}
void display(Node *head) {
Node *p;
p = head;
do
{
printf("%d ", p->data);
p = p->next;
}while(p != head);
printf("\n");
}
int main()
{
Node *head = NULL;
Node *last;
head = creat_list(head);
display(head);
last = del_per3(head);
printf("%d\n", last->data);
free(last);
return 0;
}
22??
本文档为【c语言笔试题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。